列表与字典

列表和字典,着两个对象类型都是其他对象的集合。它们都可以在原处修改,也可以按需求增长或缩短,而且可以包含任何种类的对象或者被嵌套。

列表支持在原处修改(它们是可变的),也可以响应所有针对字符串序列的操作。实际上,序列操作在列表与字符串中的工作方式相同。唯一的区别是:当应用于字符串上的合并和分片这样的操作应用于列表时,返回新的列表。然而列表时可变的,因此它们也支持字符串不支持的其他操作(如:删除、和索引赋值操作,它们都是在原处修改列表)

在列表中 + 、 * 和在字符串中的作用一样,表示合并和重复。

###列表的基本处理

#列表的生成
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)}字典解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值