一般情况
列表推导式的一般语法结构:
new_list
= [
x
for
x
in
iterable
]
其中的
iterable
表示可迭代的对象,包括字符串(
str
)、列表(
list
),元组(
tuple
)、字典(
dict
)、集合(
set
), 以及生成器(generator
)等。
先来看几个简单的例子
str_list = [x.lower() for x in "Hello"]
print(str_list)
运行结果:
list_list = [x**2 for x in [1,2,3,4]]
print(list_list)
运行结果:
tuple_list = [x+2 for x in (1,2,3,4)]
print(tuple_list)
运行结果:
ge_list = [x for x in range(8)]
print(ge_list)
运行结果:
两层 for 循环的列表推导式
列表推导式中,可以同时包含多个
for
循环,比如同时两个
for
循环,如下:
#for循环
print([x ** 2 + y for x in range(5) for y in range(4, 7)])
运行结果:
上述结果跟下面的写法结果是一致的:
two_for_list = []
for x in range(5):
for y in range(4,7):
two_for_list.append(x**2+y)
print(two_for_list)
运行结果:
列表推导式中,三层或者三层以上的 for 循环一般很少用到。
使用两个变量来生成 list
d = {'x': '1', 'y':'2', 'z':'4'}
d_list = [k+'='+v for k,v in d.items()]
print(d_list)
运行结果:
含 if 语句的列表推导式
if_list = [x**2 for x in range(10) if x%2==0]
print(if_list)