列表和字典,着两个对象类型都是其他对象的集合。它们都可以在原处修改,也可以按需求增长或缩短,而且可以包含任何种类的对象或者被嵌套。
列表支持在原处修改(它们是可变的),也可以响应所有针对字符串序列的操作。实际上,序列操作在列表与字符串中的工作方式相同。唯一的区别是:当应用于字符串上的合并和分片这样的操作应用于列表时,返回新的列表。然而列表时可变的,因此它们也支持字符串不支持的其他操作(如:删除、和索引赋值操作,它们都是在原处修改列表)
在列表中 + 、 * 和在字符串中的作用一样,表示合并和重复。
###列表的基本处理
#列表的生成
a = [1,2,3,4,5]
b = list(range(1,1001))
#长度
print(f"a列表的长度是:{len(a)}") ###### f格式化的使用
print(f"b列表的长度是:{len(b)}")
#索引和切片
print(f"b列表的最后一个元素是:{b[-1]}")
print(f"b列表的第5个元素是:{b[4]}")
print(f"a列表的前3个元素是:{a[:3]}")
print(f"b列表的的全部偶数元素是:{b[1::2]}")
#对于纯数字列表求和
print(f"a列表的总和是:{sum(a)}")
print(f"a列表的平均值是:{sum(a)/len(a)}")
#增加
a.append(6) ##不会输出
print(a)
a.extend([7,43,90])
print(a)
a+=[87,30]
print(a)
a.insert(4,100) ###insert(i,n) 在i的索引处添加n
print(a)
#删除
del a[0] ##删除索引处的元素
print(a)
a.remove(7) ##删除有的元素
print(a)
print(a.pop()) ##默认删除最后一个
print(a)
print(a.pop(-2)) ###删除索引处的元素
print(a)
#修改
a[3]= 80
a[-1]= 199
print(a)
#查询
print(f"a列表中2第一次出现的位置:{a.index(2)}")
print(f"a列表中2出现的次数:{a.count(2)}")
#反转
a.reverse()
print(a)
#排序 默认从小到大
a.sort()
print(a)
a.sort(reverse=True) ##从大到小排序
print(a)
#清空
a.clear()
print(a)
列表常用函数
list.count()统计
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list_count = list.count(4) # 统计某个元素在列表中出现的次数
print("4 在列表中出现过 %s 次" % list_count)
4 在列表中出现过 2 次
list.append()添加对象
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.append("obj") # 在列表末尾添加新的对象
print(list)
[6, 4, 5, 2, 744, 1, 76, 13, 8, 4, 'obj']
list.extend()扩展列表
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list1 = [123, 456, 789]
list.extend(list1) # 扩展列表,在列表末尾一次性追加另一个列表中的多个值(相当于把list1的元素复制到了list)
print(list)
[6, 4, 5, 2, 744, 1, 76, 13, 8, 4, 123, 456, 789]
list.pop()删除对象
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.pop(1)#移出列表中的一个元素,(默认最后一个元素)
print(list)
[6, 5, 2, 744, 1, 76, 13, 8, 4]
list.remove()删除匹配项
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.remove(4) # 移除列表中某个值的第一个匹配项(只会移出第一个)
print(list)
[6, 5, 2, 744, 1, 76, 13, 8, 4
list.insert()插入对象
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.insert(3, "test")#将对象插入列表的第三个位置
print(list)
[6, 4, 5, 'test', 2, 744, 1, 76, 13, 8, 4]
list.copy复制列表
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list1 = list.copy() # 复制一个副本,原值和新复制的变量互不影响
print(list1)
[4, 8, 13, 76, 1, 744, 2, 5, 4, 6]
list.reverse()反向排序
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.reverse() # 反向列表中元素
print(list)
[4, 8, 13, 76, 1, 744, 2, 5, 4, 6]
list.index()获取索引
# 修改第一个获取到对象
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list_index = list.index(4) # 从列表中找出某个值第一个匹配项的索引位置
list[list_index] = 999 #将我们获取到的索引给他修改为999
print(list)
[6, 999, 5, 2, 744, 1, 76, 13, 8, 4]
# 修改所有获取到对象
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
for i in range(list.count(4)): # 用列表的方法count找到有多少元素等于4,然后for在来循环
list_index = list.index(4) # 找到的每一个4都用来赋给list_index
list[list_index] = 999 # 最后将最后将我们获取到的索引改为999
print(list) # print我放入了for循环里面,所以输出了两条,但是从这里我们可以看到,第一次改了第一个4,第二次改了第二个4
[6, 999, 5, 2, 744, 1, 76, 13, 8, 4]
[6, 999, 5, 2, 744, 1, 76, 13, 8, 999]
list.sort()排序
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
list.sort()#对原列表进行排序.根据ascii排序
print(list)
[1, 2, 4, 4, 5, 6, 8, 13, 76, 744]
list[obj]步长
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
print(list[0:-1:2]) # 这个被称为步长,最后一个2代表每隔2个元素打印一次,默认就是一步
print(list[::2]) # 这种效果和上面差不多,如果是从0开始,可以把0省略不写
len(list)
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
len(list) # 返回列表元素的个数
print(len(list))
10
max(list)
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
print(max(list))# 返回列表元素的最大值
744
min(list)
list = [6, 4, 5, 2, 744, 1, 76, 13, 8, 4]
print(min(list))# 返回列表元素的最小值
744
字典
列表看做是有序的集合,那么可以把字典当成是无序的集合。它们主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
操作 | 解释 |
---|---|
D = {} | 空字典 |
D = {‘spam’:2,’egg’:3} | 两项目字典 |
D = {‘food’:{‘ham’: 1, ‘egg’: 2}} | 嵌套 |
D = dict.fromkeys([‘a’, ‘b’]} | 其他构造技术 |
D = dict.(zip(keyslist, valslist)) 、D = dict(name = ‘Bob’, age = 42) | 关键字、对应的对、键列表 |
D [‘egg’] D [‘food’][‘ham’] | 以键进行索引运算 |
‘egg’ in D | 成员关系:键存在测试 |
D.keys() | 方法:键 |
D.values() | 值 |
D.items() | 键+值 |
D.copy() | 副本 |
D.get(key, defaul) | 默认 |
D.update(D2) | 合并 |
D.pop (key) | 删除等 |
len (D) | 长度(储存的元素的数目) |
D[key] = 42 | 新增/修改键、删除键 |
del D [key] | 根据键删除条目 |
list(D.keys()) D1.keys()&D2.keys() Dictionary views | 字典视图 |
D = {x: x*2 for x in range(10)} | 字典解析 |