Почему мой список не заполняется правильно? (Python) - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь заполнить свой список числами от 1 до 100 включительно.

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

Пожалуйста, если вы все равно измените мой подход, дайте мне знать. Я буду очень благодарен, если не сказать больше.

Вот мой код:

myList = []

i =0

while len(myList) < 100: 
    i += 1
    myList += str(i)

print (myList)

Ответы [ 4 ]

2 голосов
/ 13 марта 2020
myList = []

i =0

while len(myList) < 100: 
    i += 1
    myList.append(str(i))

print (myList)
2 голосов
/ 13 марта 2020
myList = []

i =0

while len(myList) < 100: 
    i += 1
    myList += [str(i)] # or just use myList.append(i)

print (myList)
  • Что происходит в вашем случае, когда вы делаете myList += str(i), то, что вы добавляете в список, это не одно значение, а массив символов.

  • Позвольте мне объяснить это на примере.

>>> lst = []
>>> lst += str(123)
>>> lst
['1', '2', '3']
>>> lst += [str(123)]
>>> lst
['1', '2', '3', '123']
  • Как вы можете видеть, str (123) будет сначала преобразован в итеративный список ['1', '2', '3'], затем будет добавлен к списку.
  • Но во втором случае ваша правая часть [str(123)] уже является списком. Python просто добавит один элемент в ваш список.

PS: Рекомендуется использовать метод append вместо оператора += для повышения производительности. Как и в +=, оператор python должен создать целый новый список и повторить его только для одного элемента.

2 голосов
/ 13 марта 2020

Используйте базовое понимание списка c с range:

myList = [ str(i) for i in range(1,101) ]

Аргумент 101, поэтому он включает 100:

Указанная конечная точка никогда не является частью сгенерированной последовательности ...
(из этой ссылки)

1 голос
/ 13 марта 2020

Вы должны использовать myList.append вместо += myList, тогда это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...