2017-02-16 3 views
-1
import random 
global colours 
global current 
colours = ["Red","Yellow","Blue","Green","Orange","White"] 
current = [] 

def randompicker(): 
    for i in range(4): 
     current = random.choice(colours) 
randompicker() 
print(colours) 
print(current) 

Эй, поэтому вышеуказанная программа должна случайно добавить 4 элемента из списка, называемого цветами, в другой список с именем current. Я просмотрел форумы, но я не могу найти помощь, специфичную для этого случая.Python, как случайно добавлять/добавлять элементы из одного списка в другой?

Короче говоря, есть ли быстрый и эффективный способ добавить 4 случайных элемента из одного списка прямо в другое?

Благодаря

ответ

1

Чтобы исправить исходный код, делать

current.append(random.choice(colours)) 

вместо

current = random.choice(colours) 

Вы также должны сделать current локальной переменной и вернуть его, а не глобальной переменной. В том же свете вы должны передать массив вариантов как параметр, а не работать в каталоге глобальных переменных. Оба этих изменения придадут вашей функции большую гибкость.

+0

Эй, спасибо за ответ, есть способ, которым я мог бы это сделать без дубликатов? – JayHunkys

+0

@JayHunkys конечно. На словах вам нужно проверить «текущий» список, чтобы увидеть, содержит ли он уже следующий выбор, прежде чем добавлять его. Посмотрите, как я начинаю с описания решения на английском языке? Я оставляю это для вас слишком усовершенствовать это немного больше, чтобы вы могли перевести его в код. –

+0

@JayHunkys, альтернативно, вы можете использовать 'set', который сделает чек для вас –

6

Вы описывающее основное использование random.sample.

>>> colours = ["Red","Yellow","Blue","Green","Orange","White"] 
>>> random.sample(colours, 4) 
['Red', 'Blue', 'Yellow', 'Orange'] 

Если вы хотите разрешить дубликаты, используйте random.choices вместо (новый в Python 3.6).

>>> random.choices(colours, k=4) 
['Green', 'White', 'White', 'Red']