列表生成式
会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,就会占用过多的内存空间,可能会导致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)