易错题汇总

完成下列四题

L = range(20)  # range是可迭代对象,只有对其进行取值时,才能获得到其中的元素 [ 例如 用list(L) 方可触发内部的__next__ ]
# 1.取第一到第三个元素
print(list(L[:3]))
# list(range(20))[:3]  # 先强转为列表,一次性全部取出所有元素,再列表切片【内存中取出了所有】
# list(range(20)[:3])  # 先列表切片,切出前三个元素,再对这个三个元素进行取出【内存中只取出3个】
# 2.取倒数第二个元素
print(list(L[-2:-1]))
print(list(L[18:19]))
# 3.取最后10个元素
print(list(L[-10::]))
# 4.复制L到L1
L1 = list(L[:])
print(L1)

L1 =list(L).copy()
print(L1)

 

写代码删除列表中的重复元素

1. 借助集合的去重特性,将列表强转为集合,再换回列表

  有隐患,集合中的元素是无序的! 一旦原列表中元素要求有序,此方法则不可用       

lst = [1, 1, 2, 3, 5, 5, 7, 9, 10, 12, 12, 16]
se = set(lst)
new_lst = list(se)
print("原列表:", lst)
print("新列表:", new_lst)
View Code

2.  利用in判定元素是否已存在新列表中

lst = [1, 1, 2, 3, 5, 5, 7, 9, 10, 12, 12, 16]
new = []
for el in lst:
    if el not in new:
        new.append(el)
print("新列表:", new)

 

说出一种判定字典中某key是否存在的可用方法

1. 利用 字典对象自身的get(key)方法 (遇到下面代码情况  使用该方法 则判断结果不可靠)

2 . 利用in去判断

dic1 = {'k': None}
print(dic1.get('k'))  # 键存在,但打印的是key对应的value值,此值恰好为None

dic2 = {'name': "ABC", 'age': 3}
print(dic2.get('gender'))
print(dic2.get('gender', None))

dic2.update(dic1)
print(dic2)

key = 'k'
print(key in dic2)  # 判断字典中是否存在此键

 

下段代码的3个打印输出是什么

def extendList(val, list=[]):
    list.append(val)
    return list


list1 = extendList(10)
list2 = extendList(123, [])
list3 = extendList('a')

print(list1)
print(list2)
print(list3)

 

[10, 'a']
[123]
[10, 'a']

 

posted @ 2020-04-30 22:37  CherryYang  阅读(167)  评论(0编辑  收藏  举报