易错题汇总
完成下列四题
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. 借助集合的去重特性,将列表强转为集合,再换回列表
有隐患,集合中的元素是无序的! 一旦原列表中元素要求有序,此方法则不可用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
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']