Я пишу простой скрипт в Python, который создает список из 10000 экземпляров класса test
. Затем я просматриваю каждый элемент в списке и изменяю значение переменной x
на случайную строку, сгенерированную с использованием метода id_generator
.Получение значения из списка в Python
import string
import random
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
class test:
x = None
y = None
d = test
lista = [d] * 10000
w = 0
while (w < 10000):
lista[w].x = id_generator()
w = w + 1
print(lista[3].x)
print(lista[40].x)
print(lista[1999].x)
Почему я получаю 3 одинаковых значения на выходе? Должен ли я получить 3 разных значения, сгенерированных с использованием id_generator()
Потому что вы получили список 10000 _references_ для тестового _class_. Чтобы создать список, выполните следующие действия: 'lista = [test() for _ in xrange (10000)]'. Хотя цикл тоже уродливый, замените его на in in ... – myaut
'lista [1] is lista [1493]' возвращает 'True'. Это потому, что вы создаете только один объект, который 10000 раз в вашем списке. – syntonym
Я проигнорировал, потому что вы «должны были понять», что этот код 'd = test; lista = [d] * 10000' предполагается. – nbro