Я имею дело с некоторой загадкой и надеялся на некоторую ясность. Я написал сценарий для поиска кости комбинаций рулонных добавление к 24, который выглядит следующим образом:Создание неожиданного значения кортежа
start=[3,3,3,3,3,3,3,3]
outcomes=set(tuple(start)) #Use a set to ensure uniqueness
index_list=np.random.randint(0,8,1000)
#This little snippet adds one and subtracts one randomly, keeping total at 24
for i in xrange(0,500):
upper=index_list[i]
downer=index_list[i+20]
if start[upper]!=6 and start[downer]!=1:
start[upper]=start[upper]+1
start[downer]=start[downer]-1
outcomes.add(tuple(start))
print outcomes
То, что я бегу в, в том, что когда я смотрю на результаты, есть один 3 типа «INT» в там.
set([(4, 4, 4, 3, 2, 2, 2, 3), 3, (2, 5, 4, 3, 1, 4, 2, 3), (4, 4, 4, 2, 3, 1, 3, 3),(4, 2, 5, 2, 3, 4, 1, 3)])
Хотя я мог бы, конечно, удалить его, мне просто любопытно, как он туда начинает? Мое первоначальное предположение заключалось в том, что индексный список может создавать индекс за пределами [0-7], но это не так. Я искал аналогичный вопрос в других местах, но еще не нашел подобной проблемы. Благодаря!
Ahh, что имеет смысл! Кто бы ни запустил это, почему вы это сделали? Разве это не питонический способ сделать это, или есть еще одна причина для его понижения? –
Я собирался прокомментировать нижестоящую. Кто-то, кто неправильно понял вопрос ... Я тоже не понимаю. –
@MasonGardner Я не сделал ни слова, но причина, по которой я не поднял голову, состоит в том, что объяснение на мой взгляд мало вводит в заблуждение. 'set' ожидает итерабельность, но [tuples * are * iterables] (https://docs.python.org/2/glossary.html#term-iterable) - этот ответ звучит так, как будто это не так. Причина, по которой вы получаете '3', состоит в том, что это единственное уникальное значение в' (3, 3, 3, 3, 3, 3, 3, 3) '. – elethan