2017-01-22 2 views
1

поэтому я пытаюсь удалить числа из строки, используя список чисел от 0,9. Я уже давно пытаюсь понять это, но я далеко не справился с этим, я поставлю код здесь, надеюсь, кто-то может мне помочь в этом. Я не хочу использовать способы, которыми я не знаком с lambda или чем-то, что я видел ранее здесь, в stackoverflow.Удаление номеров из строки с использованием списка Python

string = input("Type a string: ") 

numbers = ["0","1","2","3","4","5","6","7","8","9"] 
start = 0 

for i in range(len(string)): 
    if(string[i] == numbers[start]): 
     string.remove(i) 
    else: 
     print("Banana") 

print(string) 
+1

'string = string.remove (i)'? Строки неизменяемы, их нельзя изменить на месте, поэтому все, что их изменяет, возвращает новую строку. – jonrsharpe

ответ

3

Вы не должны повторять & попытку изменить объект в то время как итерация. Это осложняется тем, что строки неизменяемы (новая ссылка создается при изменении содержимого строки). Ну, это нехорошее решение, а не исполнение, даже если вы можете сделать эту работу.

вещий & простой способ сделать это было бы:

new_string = "".join([x for x in string if not x.isdigit()]) 

(список понимание, которое создает новую строку, сохраняя все символы, но численные из них)

может быть «переведены» для non-listcomp:

l = [] 
for x in string: 
    if not x.isdigit(): 
     l.append(x) 
new_string = "".join(l) 
+1

Я бы снял квадратные скобки. Выражение генератора будет достаточным и сохранить некоторую память. – schwobaseggl

+0

Хорошо, это что-то еще, что я видел здесь, но я не совсем понимаю, как это работает, не могли бы вы объяснить мне, как (x for in x in string if not x.isdigits()) работает? – Kobbi

+0

@ Kobbi Вы должны прочитать некоторые [документы по теме] (https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions). – schwobaseggl

Смежные вопросы