Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Перевод списка строк в список чисел

a - список строк :['0', '0', '0', '0', '0', '0', '0', '0', '0', '0']
for el in a: el = int(el)
пытался таким способом преобразовать в числа, но в преобразует в рамках данного цикла


Ответ

Наиболее идиоматический и идеологически выверенный способ:
result = [int(item) for item in a]
По поводу вашего первого варианта: когда вы пишете for el in a, то каждый раз в цикле в el записывается ссылка на элемент списка. Но когда вы пишете el = int(el), то в переменную el просто записывается другая ссылка, сам элемент списка не меняется.
Как понять, что это именно ссылка, а не копия элемента? Вот пример, как при помощи вызова метода элемента списка меняется сам элемент:
>>> a = [[], [], []] >>> for el in a: el.append(1) >>> a [[1], [1], [1]]
По поводу вашего ответа, перебор со счетчиком (если он вам вдруг действительно понадобится) на Python правильнее (проще и приятнее, без всяких len вложенных в range) делать через enumerate:
for i, item in enumerate(a): a[i] = int(item)

Комментариев нет:

Отправить комментарий