#python #list
Вопрос:
Я хочу вывести все элементы из списка (по 1 элементу за раз), но в случайном порядке и не повторяясь в выводе, элемент, который уже повторен, не должен отображаться снова.
вот что я получил, но в моем выводе я каждый раз получаю дубликаты.
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
я пробовал, random.choice(), random.shuffle(), random.sample(). но всегда получаю дубликаты в выводе. как я могу это решить? кроме того, я уже искал stackoverflow для возможных решений, но в этих примерах в качестве конечного результата выделяется только 1 элемент.
Комментарии:
1.
random.shuffle()
не даст вам дубликатов, если у вашего ввода нет дубликатов2. хорошо, то, как я использовал random.shuffle (), было неверно. приведенный ниже пример помог мне решить эту проблему. очень ценю ваш комментарий. Спасибо, Хоббс.
Ответ №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
Комментарии:
1. Спасибо, что показали пример! Я неправильно использовал random.shuffle (). действительно ценю это.
Ответ №2:
Самый простой способ:
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
Обратите внимание, что это никоим образом не изменяет исходный список.
Ответ №3:
Просто удалите использованные фрукты из списка опций.
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)