这里,我已经从列表打印常见项一些代码,并设定()。 我没有得到什么结果变量的说法。打印常见的项目,并设定()
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]
这里,我已经从列表打印常见项一些代码,并设定()。 我没有得到什么结果变量的说法。打印常见的项目,并设定()
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]
最后一行执行在列表解析的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
,要能够使用快速查找/交叉点与其他迭代。
这就是所谓的名单理解,基本上是做你的阵列,或字典里面经常循环。
初学Python程序员一个更可读的代码如下:
results = []
for i in set(a):
if i in b:
results.append(i)
您正在寻找到list(a)
只保留那些谁在这两个list(a)
和list(b)
。
多少可读?这只是写它的另一种方式。列表理解_is_可读。 –
可读初学者,不是有人熟悉Python语法 –
列表理解是比经典的循环结构要快得多。更好地教育人们。 –
它打印的普通物品。我没有看到一个问题 –