這裏,我已經從列表打印常見項一些代碼,並設定()。 我沒有得到什麼結果變量的說法。打印常見的項目,並設定()
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語法 –
列表理解是比經典的循環結構要快得多。更好地教育人們。 –
它打印的普通物品。我沒有看到一個問題 –