这里我有一些代码来自列表中的Print common项和set()。 我没有得到结果变量的说法。
import random
a = random.sample(range(1,30), 12)
b = random.sample(range(1,30), 16)
result = [i for i in set(a) if i in b]
以下行的含义是什么?请解释我是编程新手。
[i for i in set(a) if i in b]
答案 0 :(得分:0)
最后一行在列表推导中执行a
和b
值之间的交集。只有pooly执行:
首先,我不明白为什么将a
转变为set
。对range
整数进行采样始终提供不同的值。在这种情况下,它不会加快处理速度,它只是与订单混淆(已经是随机的......)。
然后,由于线性搜索(if i in b
是b
)
list
效率低(如果只有几个值,则不明显)
我会像这样重写它:
a = random.sample(range(1,30), 12)
b = set(random.sample(range(1,30), 16))
result = [i for i in a if i in b]
甚至更好地使用set
intersection
方法。
result = set(random.sample(range(1,30), 12)).intersection(random.sample(range(1,30), 16))
在两次重写中,我们创建一个set
,以便能够使用与另一个可迭代的快速查找/交集。
答案 1 :(得分:0)
它被称为列表理解,它基本上在数组或字典中进行常规循环。
初学者python程序员的可读代码将是:
results = []
for i in set(a):
if i in b:
results.append(i)
您正在查看list(a)
并仅保留同时位于list(a)
和list(b)
的人。