我希望从列表中输出所有项目(一次一个项目),但以随机顺序输出,并且在输出中不重复,已经迭代的项目不应该再次显示
这是我得到的,但是,在我的输出中,我每次都得到重复的。
import random
fruits = ['apple','banana','dragonfruit','kiwi','loganberry','mandarin','mango','pineapple']
for fruit in fruits:
fruit = random.choice(fruits)
#do something
print(fruit)
output:
banana
apple
mango
kiwi
mango
dragonfruit
banana
banana
i have try, random.choice(), random.shuffle(), random.sample()。但是输出总是重复的。我怎么解决这个问题?此外,我已经在stackoverflow中搜索了可能的解决方案,但在这些示例中,只有1项作为最终输出。
使用shuffle
从随机模块,使您更容易-
random.shuffle(fruits)
for fruit in fruits:
#do something
print(fruit)
这不会给出任何重复项,但它会给出如果列表为任何重复项。(见@hobbs评论)
查看文档了解更多类似的方法。
结果:
pineapple # Of course next time different result
banana
apple
dragonfruit
mango
loganberry
kiwi
mandarin
import random
fruits = ['apple','banana','dragonfruit','kiwi','loganberry','mandarin','mango','pineapple']
for f in random.sample(fruits, len(fruits)):
print(f)
显示(好吧,一种可能性):
banana
kiwi
apple
mandarin
dragonfruit
loganberry
mango
pineapple
注意,这不会以任何方式改变原始列表。
只需从选项中删除使用过的水果。
import random
fruits = ['apple','banana','dragonfruit','kiwi','loganberry','mandarin','mango','pineapple']
fruitsCopy = fruits.copy()
for fruit in fruits:
fruit = random.choice(fruitsCopy)
fruitsCopy.remove(fruit)
print(fruit)