列表生成式
会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,就会占用过多的内存空间,可能会导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况
实例1:
在数字0-99中,取大于50的数,分为拼接在apple字符串后面,并存到一个列表中
一般的写法:
messi = []
for i in range(100):
if i > 50:
messi.append("apple%s" % i)
print(messi)
列表生成式的写法:
l = ["apple%s" % i for i in range(100) if i > 50] # 'apple%s' %i 这句话在列表中,所以不用append命令写入列表中
print(l)
实例2:
将一个列表中的每一个元素与一个字符串的每一个字符拼接,并保存到一个列表中
一般的写法:
x1 = [1, 2, 3, 4]
s = 'month'
x2 = []
for num in x1:
for s1 in s:
if num > 2:
t = (num, s1)
x2.append(t)
print(x2)
列表生成式的写法
x1 = [1, 2, 3, 4]
s = "month"
le = [(num, s1) for num in x1 if num > 2 for s1 in s]
print(le)