Подтвердить что ты не робот

Python: как составить список n чисел и произвольно выбрать любой номер?

Я подсчитал что-то, и он вышел на N

Теперь я хотел бы иметь список, содержащий от 0 до N чисел в нем. Пример: N = 5 затем count_list = [1, 2, 3, 4, 5]

Как я могу это сделать?

Кроме того, как только я создал список, Я хотел бы случайным образом выбрать номер из этого списка и использовать его. После этого я хотел бы выбрать другой номер из оставшихся номеров списка (N-1), а затем использовать его также. Это продолжается, список пуст. может кто-то, пожалуйста, помогите мне с этим? Благодаря

4b9b3361

Ответ 1

Вы можете создать перечисление элементов примерно так:

mylist = list(xrange(10))

то вы можете использовать функцию random.choice, чтобы выбрать свои элементы:

import random
...
random.choice(mylist)

EDIT:

Как правильно заявил Асим Ихсан, мой ответ еще не затрагивает полную проблему ОП. Чтобы удалить значения из списка, можно просто вызвать list.remove():

import random
...
value = random.choice(mylist)
mylist.remove(value)

Ответ 2

Вы можете попробовать этот код

import random
N = 5
count_list = range(1,N+1)
random.shuffle(count_list)

while count_list:
    value = count_list.pop()
    # do whatever you want with 'value'

Ответ 3

Что касается первой части:

>>> N = 5
>>> count_list = [i+1 for i in xrange(N)]
>>> count_list
[1, 2, 3, 4, 5]
>>> 

Что касается второго, прочитайте следующее: http://docs.python.org/library/random.html

>>> from random import choice
>>> a = choice(count_list)
>>> a
1
>>> count_list.remove(a)
>>> count_list
[2, 3, 4, 5]

Это общая идея.

Кстати, вам также может быть интересно прочитать это:

http://code.activestate.com/recipes/59883-random-selection-of-elements-in-a-list-with-no-rep/

Существует несколько реализаций быстрого случайного выбора.

Ответ 4

Вам не нужно подсчитывать материал, если вы хотите выбрать случайный элемент. Просто используйте random.choice() и передайте свой следующий:

import random
items = ['foo', 'bar', 'baz']
print random.choice(items)

Если вам действительно нужно их подсчитать, используйте random.randint(1, count+1).

Ответ 5

Вы можете использовать:

import random
random.choice(range(n))

или

random.choice(range(1,n+1))

если вы хотите от 1 до n, а не от 0.

Ответ 6

После этого я хотел бы выбрать другой номер из оставшихся номеров списка (N-1), а затем использовать его также.

Тогда вы, вероятно, не хотите создавать список чисел от 1 до N только для того, чтобы выбрать один (почему бы просто не запросить случайное число в этом диапазоне напрямую, а не явно создавать его на выбор?), а вместо этого перетасовать такой список. К счастью, модуль random вы тоже задумали: просто используйте random.shuffle.

Конечно, если у вас есть огромный список чисел, и вы только хотите нарисовать несколько, то, безусловно, имеет смысл рисовать каждый с помощью random.choice и удалять его.

Но... почему вы хотите выбирать числа из диапазона, что соответствует количеству некоторых элементов? Вы собираетесь использовать номер, чтобы выбрать один из элементов? Не делай этого; что уходит с вашего пути, чтобы сделать вещи слишком сложными. Если вы хотите выбрать один из элементов, сделайте это прямо - снова с помощью random.choice.

Ответ 7

Создайте список (отредактированный):

count_list = range(1, N+1)

Выберите случайный элемент:

import random
random.choice(count_list)

Ответ 8

maitain a set и удалите случайно выбранный элемент (с choice) до тех пор, пока список не будет пуст.

s=set(range(1,6))
import random

while len(s)>0:
  s.remove(random.choice(list(s)))
  print(s)

Три пробега дают три разных отрезка

>>> 
set([1, 3, 4, 5])
set([3, 4, 5])
set([3, 4])
set([4])
set([])
>>> 
set([1, 2, 3, 5])
set([2, 3, 5])
set([2, 3])
set([2])
set([])

>>> 
set([1, 2, 3, 5])
set([1, 2, 3])
set([1, 2])
set([1])
set([])