【发布时间】:2023-01-04 08:56:00
【问题描述】:
执行时我需要以下代码来生成一个固定长度为 4 个元素的列表。 为什么它不适用于 for 循环?
from random import choice
pool = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'a', 'b', 'c', 'd', 'e']
winning_ticket = []
for pulled_ticket in range(4):
pulled_ticket = choice(pool)
if pulled_ticket not in winning_ticket:
winning_ticket.append(pulled_ticket)
print(winning_ticket)
当我执行代码时,结果如下所示:
[7, 4, 8, 'e']
[5, 'e']
['e', 6, 3]
但是使用 while 循环,我没有这个问题:
from random import choice
pool = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'a', 'b', 'c', 'd', 'e']
winning_ticket = []
while len(winning_ticket) < 4:
pulled_ticket = choice(pool)
if pulled_ticket not in winning_ticket:
winning_ticket.append(pulled_ticket)
print(winning_ticket)
列表长度始终为四:
['e', 5, 1, 8]
[7, 'd', 2, 8]
[2, 6, 'e', 10]
非常感谢!
【问题讨论】:
-
为什么不用
choices? -
您的第一个示例有时会达到相同的数字,因此为什么 if 条件没有通过。
-
而第二个例子会一直迭代,直到到达的 len 为 4。而 for 只执行了 4 次。
-
您可以改用
winning_ticket = random.sample(pool, 4)。 -
您的 for 循环做出 4 个选择。你的 while 循环继续选择直到你有 4清楚的结果。
标签: python list for-loop while-loop