python 列表、字典的方法

时间:2023-02-10 21:25:35
# 列表最后新增元素
 li = [11, 22, 33]
print(li)
li.append(44) # 对原列表最后增加一个元素
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("") # 将两个字符串扩展到列表
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)

[11, 22, 11, 22, 11]
[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还是指向同一个列表,并没有产生新的副本

 
字典

 #encoding=utf-8  

 print '中国'  

 #字典的一键多值  

 print'方案一 list作为dict的值 值允许重复'    

 d1={}
key=1
value=2
d1.setdefault(key,[]).append(value)
value=2
d1.setdefault(key,[]).append(value) print d1 #获取值
print '方案一 获取值'
print list(d1[key]) print '方案一 删除值,会留下一个空列表'
d1[key].remove(value)
d1[key].remove(value)
print d1 print '方案一 检查是否还有一个值'
print d1.get(key,[]) print '方案二 使用子字典作为dict的值 值不允许重复' d1={}
key=1
keyin=2
value=11
d1.setdefault(key,{})[keyin]=value
keyin=2
value=22
d1.setdefault(key,{})[keyin]=value
keyin=3
value=33
d1.setdefault(key,{})[keyin]=value print d1 print '方案二 获取值'
print list(d1[key]) print '方案二 删除值,会留下一个空列表'
del d1[key][keyin]
keyin=2
del d1[key][keyin]
print d1 print '方案二 检查是否还有一个值'
print d1.get(key,()) print '方案三 使用set作为dict的值 值不允许重复'
d1={}
key=1
value=2
d1.setdefault(key,set()).add(value)
value=2
d1.setdefault(key,set()).add(value)
value=3
d1.setdefault(key,set()).add(value) print d1 print '方案三 获取值'
print list(d1[key]) print '方案三 删除值,会留下一个空列表'
d1[key].remove(value)
value=2
d1[key].remove(value)
print d1 print '方案三 检查是否还有一个值'
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 根据题目我自解的代码是:
 #!/usr/bin/env python3
# -*-coding:utf8-*- li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic = {}
for i in li:
if i > 66:
dic.setdefault("k1", set()).add(i)
else:
dic.setdefault("k2", set()).add(i)
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)