Форум сайта python.su
Здравствуйте! Есть у меня список с данными типа str
['1', 'Маша', 'жопка', '57'.....................]
for element in string:
if element.isdigit():
symbol=int(element) # работает
string.remove(element)
string.append(symbol) # уже не работает!!!!!!
Отредактировано Syslik (Июнь 30, 2017 10:20:17)
Офлайн
Ты в цикле изменяешь список по которому идет цикл и когда цикл доходит до цифр, которые ты добавил, то у них нет метода isdigit. Лучше заведи второй список и скидывай в него числа и строки.
Офлайн
Это так, но мне в любом случае новый список нужно будет занести в старый, и дальше ещё с ним работать. То есть на выходе должно быть
[1, 'Маша', 'жопка', 57.....................]
Офлайн
SyslikТак заполняй новый список а потом присвой его старому.
Это так, но мне в любом случае новый список нужно будет занести в старый, и дальше ещё с ним работать. То есть на выходе должно быть
new_string=[] for element in string: if element.isdigit(): symbol=int(element) new_string.append(symbol) else: new_string.append(element) string = new_string
for i, element in enumerate(string): if element.isdigit(): string[i]=int(element)
Офлайн
Изменяемое состояние это зло. По этому я бы не рекомендовал менять списки, а в место этого создавал бы новые:
>>> s = ['1', u'Маша', u'жопка', '57'] >>> s = [ int(x) for x in s if x.isdigit() ] >>> s [1, 57]
Офлайн
Спасибо! Через enumerate прошло.
Офлайн