Python中有许多Pythonic的序列操作,也许它们可以用更加基础的方式实现,但这样写往往更加简洁。
列表推导
列表推导(listcomps)是一种构建列表的快捷方式。
numbers = [2022,1,22,20,38]
numbers_1 = [bin(s) for s in numbers] # 将所有数字转换为二进制,并存入列表
numbers_2 = [hex(s) for s in numbers if s%2 == 0] # 将所有偶数数字转换为十六进制,并存入列表
print(numbers_1)
print(numbers_2)
运行结果如下:
['0b11111100110', '0b1', '0b10110', '0b10100', '0b100110']
['0x7e6', '0x16', '0x14', '0x26']
列表推导相对于之前的for
循环写法,显然更加紧凑。由于列表推导支持映射变换和条件判断,我们也可以用map
(映射)和filter
(过滤器)来实现相似的功能。此两个函数的具体用法不在此阐述。
numbers_1 = list(map(hex,filter(lambda x:x%2==0,numbers)))
有多个列表参与推导时,将会返回它们的笛卡尔积
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
result