python 列表、字典的方法
# 列表最后新增元素
1 li = [11, 22, 33] 2 print(li) 3 li.append(44) # 对原列表最后增加一个元素 4 print(li)
执行如下:
[11, 22, 33]
[11, 22, 33, 44]
# 列表清空 li = [11, 22, 33, 44, 55] li.clear() # 清空列表 print(li)
执行如下: []
# 列表拷贝 li = [22, 21, 32, 53] bi = li.copy() # 拷贝一个新列表 print(li) print(bi)
执行如下:
[22, 21, 32, 53]
[22, 21, 32, 53]
# 对原有列表进行扩展 li = [23, 34, 25, 26] li.extend("11") # 将两个字符串扩展到列表 print(li)
[23, 34, 25, 26, '1', '1']
li.extend([93]) # 扩展一个列表
print(li)
[23, 34, 25, 26, '1', '1', 93]
bi = [12, 423, 231]
li.extend(bi) # 将另一个列表扩展进来,从原列表后面添加
print(li)
[23, 34, 25, 26, '1', '1', 93, 12, 423, 231]
li = list([1, 2, 3]) print(li) li.extend([11, 22]) # 扩展一个列表 print(li) li.extend((911, 22)) # 也可以是元组 print(li)
执行如下:
[1, 2, 3]
[1, 2, 3, 11, 22]
[1, 2, 3, 11, 22, 911, 22]
# 列表索引 li = [1, 2, 3, 4, 5] print(li.index(5)) # 获取列表元素的下标号
执行如下:
4
# 列表插入 li = [2, 2334, 11, 33] li.insert(2, ("a", "b", "c")) # 在索引2处插入一个元组 print(li) li.insert(4, [66, 33]) # 在索引4处插入一个新列表 print(li) li.insert(1, "cc") # 在索引1处插入一个元素 print(li)
结果如下:
[2, 2334, ('a', 'b', 'c'), 11, 33]
[2, 2334, ('a', 'b', 'c'), 11, [66, 33], 33]
[2, 'cc', 2334, ('a', 'b', 'c'), 11, [66, 33], 33]
# 在移除列表元素,在消息队列中会用到 li = [2, 2334, 11, 33] ret = li.pop() # 获取剔除的值,默认删除最后的值 print(li) print(ret)
[2, 2334, 11]
33
ret1 = li.pop(0) # 删除该索引处的元素,并获取删除的值
print(li)
[2334, 11]
print(ret1)
2
# 删除列表指定的值
li = [11, 22, 11, 22, 11]
print(li)
li.remove(11) # 删除列表某一元素,此处非索引,如有重复只删除第一个
print(li)
[22, 11, 22, 11]
# 列表元素反转 li = [11, 22, 33, 44, 55] print(li) li.reverse() # 反转列表元素 print(li)
[11, 22, 33, 44, 55]
[55, 44, 33, 22, 11]
# 统计某一元素在列表中的个数 li = [23, 342, 22, 42, 22] cu = li.count(22) # 统计某一元素在列表中的个数 print(cu)
2
#列表数组排序 li = [22, 12, 212, 13, 423] li.sort() print(li) [12, 13, 22, 212, 423]
#如果需要一个排序好的副本,同时保持原有列表不变
a =[4, 6, 2, 1, 7, 9] b = a[ : ] b.sort() print b #[1, 2, 4, 6, 7, 9] print a #[4, 6, 2, 1, 7, 9]
#注意:b = a[:] 通过分片操作将列表a的元素全部拷贝给b,如果简单的把a赋值给b:b = a,b和a还是指向同一个列表,并没有产生新的副本
字典
1 #encoding=utf-8 2 3 print '中国' 4 5 #字典的一键多值 6 7 print'方案一 list作为dict的值 值允许重复' 8 9 d1={} 10 key=1 11 value=2 12 d1.setdefault(key,[]).append(value) 13 value=2 14 d1.setdefault(key,[]).append(value) 15 16 print d1 17 18 #获取值 19 print '方案一 获取值' 20 print list(d1[key]) 21 22 print '方案一 删除值,会留下一个空列表' 23 d1[key].remove(value) 24 d1[key].remove(value) 25 print d1 26 27 print '方案一 检查是否还有一个值' 28 print d1.get(key,[]) 29 30 print '方案二 使用子字典作为dict的值 值不允许重复' 31 32 d1={} 33 key=1 34 keyin=2 35 value=11 36 d1.setdefault(key,{})[keyin]=value 37 keyin=2 38 value=22 39 d1.setdefault(key,{})[keyin]=value 40 keyin=3 41 value=33 42 d1.setdefault(key,{})[keyin]=value 43 44 print d1 45 46 print '方案二 获取值' 47 print list(d1[key]) 48 49 print '方案二 删除值,会留下一个空列表' 50 del d1[key][keyin] 51 keyin=2 52 del d1[key][keyin] 53 print d1 54 55 print '方案二 检查是否还有一个值' 56 print d1.get(key,()) 57 58 print '方案三 使用set作为dict的值 值不允许重复' 59 d1={} 60 key=1 61 value=2 62 d1.setdefault(key,set()).add(value) 63 value=2 64 d1.setdefault(key,set()).add(value) 65 value=3 66 d1.setdefault(key,set()).add(value) 67 68 print d1 69 70 print '方案三 获取值' 71 print list(d1[key]) 72 73 print '方案三 删除值,会留下一个空列表' 74 d1[key].remove(value) 75 value=2 76 d1[key].remove(value) 77 print d1 78 79 print '方案三 检查是否还有一个值' 80 print d1.get(key,())
根据上面的实例我们完成一个实验:
如下 :
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic = {}
将 li列表内所有数字分类,即将所有大于66的数字保存至字典的第一个KEY中,将所有小于等于66的数字保存至第二个KEY中
{key1} 大于66 {key2} 小于等于66
根据题目我自解的代码是:
1 #!/usr/bin/env python3 2 # -*-coding:utf8-*- 3 4 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] 5 dic = {} 6 for i in li: 7 if i > 66: 8 dic.setdefault("k1", set()).add(i) 9 else: 10 dic.setdefault("k2", set()).add(i) 11 print(dic)
运行结果是:
{'k2': {33, 66, 11, 44, 22, 55}, 'k1': {88, 90, 99, 77}}
字典其它一些测试
#!/usr/bin/env python3.5 # -*-coding:utf8-*- # tu = (0, 2, 3, 4,) # tu = tuple((11, 22, 34,)) # tu = tuple([11, 22, 33, 34]) # dic = {"k1": "v1", "k2": "v2"} # dic = dict(k1="v1", k2="v2") # new_dict = dic.fromkeys(['k1', 'k2'], 'v1') # 将这些KEY 生成一个新的字典 # print(new_dict) # dic = {"k1": "v1", "k2": "v2"} # print(dic["k1"]) # print(dic["k2"]) # print(dic["k3"]) # 出错 # # print(dic.get("k1")) # print(dic.get("k2")) # print(dic.get("k3", "alex")) # 如果KEY不存在 会默认使用值"alex" # # dic = {"k1": "v1", "k2": "v2"} # # print(dic.keys()) # print(dic.values()) # print(dic.items()) # 键值对 # # for k in dic.keys(): # print(k) # for v in dic.values(): # print(v) # for k, v in dic.items(): # print(k, v) # # dic = {"k1": "v1", "k2": "v2"} # pp_dic = dic.pop("k1") # 必须加参数,指定一个KEY 因字典是无序的 # print(dic) # print(pp_dic) # # dic.popitem() # 随机删除一对键值 # print(dic) # dic = {"k1": "v1", "k2": "v2"} # dic['k3'] =123 # dic.setdefault('k4') # print(dic) # 没什么用 # dic = {"k1": "v1", "k2": "v2"} # ret = dic.update({"k3": 123}) # # print(dic) # print(ret)