1、Slice:集合截取
names = ['张三', '李四', '王五', '赵六', 'Tom', 'Jack']
# 1.1 获取前4个元素,list[start: end], 区间前闭后开:【start: end);
print(names[0:4])
# 从第一个元素开始,可以简写为list[:end]。例如取前4个元素
print(names[:4])
# 从第n个元素开始,取到最后一个元素,可以简写为list[n:] 。例如从第5个取到最后
print(names[4:])
# 取最后n个元素,可以简写为list[-n:]。例如取最后2个元素
print(names[-2:])
# 从start开始取到end, 每n个取一个,语法list[start:end:n]。例如从第10开始到20结束,每隔2个取一个
nums = list(range(100))
# [10, 12, 14, 16, 18]
print(nums[10:20:2])
# 复制一个list, list[:]
names2 = names[:]
print(names2)
# Slice同样可以对字符进行操作,相当于substring功能,即截取字符串,也可以对tuple集合操作
print("我爱中国"[:2])
print((1, 2, 3, 4, 5, 6)[:4])
2、集合的迭代
from collections import Iterable
# 1、通过for v in d的方式对有序集合如list/tuple进行迭代,字符串也可以
names = ['tom', 'jack', 'lucy', 'bob']
for name in names:
print(name)
str1 = "我爱中国"
for c in str1:
print(c)
print("----------------------------")
# 2、迭代dict
person = {"name": "tom", "age": 25, "sex": "男", "address": "安徽-合肥"}
# 2.1for key in dict的语法只能获取dict的key值
for k in person:
print(k)
print("----------------------------")
# 2.2 for value in dict.values() 方式迭代dict,获取value值
for v in person.values():
print(v)
print("----------------------------")
# 2.3 for key, value in d.items 方式迭代dict,获取key、value
for k, v in person.items():
print(k)
print(v)
print("----------------------------")
# 4、Python内置collections模块的Iterable类型用来判断对象是否可以进行迭代, Iterable模块只能用于Python3.3到3.9版本中
print(isinstance('abc', Iterable))
# 5、Python内置enumerate函数可以把list/tuple转换成dict, key为list/tuple的索引/下标
# 获取有序集合索引/下标: for index, value in enumerate(list)
for i, name in enumerate(names):
print(i, name)
3、Comprehensions是Python内置的生成list的语法及类库
# 1、range函数,生成范围集合,如生成1-10的list集合
list1 = list(range(1, 11))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list1)
# 2、range配合for循环,例如获取集合元素为[1*1, 2*2, 3*3, ... , 10*10]
# 方法1
list2 = []
for i in range(1, 11):
list2.append(i*i)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list2)
# 方法2 可缩写为:
list3 = [i1*i1 for i1 in range(1, 11)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list3)
# 3、循环后面加if判断,例如上面平方案例中只取偶数的平方集合
list4 = [i1*i1 for i1 in range(1, 11) if i1 % 2 == 0]
# [4, 16, 36, 64, 100]
print(list4)
# 4、两层循环的使用, 同样适用于对字符串的操作,返回仍是集合
list5 = ['A', 'B', 'C', 'D']
list6 = ['X', 'Y', 'Z']
list7 = [i1+i2 for i1 in list5 for i2 in list6]
# 组合得到: ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ', 'DX', 'DY', 'DZ']
print(list7)
# 5、dict转换成list
dict1 = {'name': 'tom', 'age': '19', 'sex': '男'}
list8 = [k+'='+v for k, v in dict1.items()]
# ['name=tom', 'age=19', 'sex=男']
print(list8)