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)
Комментариев нет:
Отправить комментарий