Проблемы с итерацией списков в Python
Я пытаюсь решить то, что должно быть легкой проблемой:
userInput = input("list element seperated by space: ") nums = userInput.split() for x in list(nums): y = int(x) * 3 z = list(str(y)) while "3" in z: z.remove("3") else: print(z)
С приведенным выше кодом; логически, все вхождения "3" должны быть удалены из списка. Однако это не работает так, как хотелось бы. Может ли кто-нибудь объяснить, почему и как это исправить?
Я хочу умножить отдельные элементы пользовательского ввода на 3, а затем удалить все экземпляры 3 из списка и распечатать выходные данные.
Я также пробовал в то время как истина и использование i += 1 подсчитывает и все такое, но просто не могу заставить это работать или мою голову вокруг этого. Спасибо за помощь.
input - desired output - currently outputting 1 2 3 - 6 9 - 9 0 - 0 - 0 2 6 11 - 6 18 - []
Я обнаружил, что то, что я должен использовать, - это понимание списка. Поэтому я провел некоторые исследования по этому вопросу и смог заставить их функционировать, но все еще не так, как хотелось бы:
p = input("list element seperated by space: ") nums = p.split() mp = [num for num in nums * 3] print(mp) for x in list(nums): y = int(x) * 3 z = str(y) print(z) c = [z] filtered = [chr for chr in c if c != "3"] print(filtered) for n in list(z): negate = [string for string in n if n != "3"] print(negate)
Результат остается тем же самым. Я не понимаю, почему и как я могу обойти это?
Почему так трудно отсканировать список на наличие строки и удалить ее из списка?!? :(
Честно говоря, ценю помощь, так как мне хочется стоять лицом к столу-ладошкой-плакать ха-ха :P
Что я уже пробовал:
Stackoverflow, youtube, документация python.
Richard MacCutchan
Я думаю, что проблема заключается в том (хотя я не могу быть уверен в правильном отступе), что вы каждый раз создаете новый список из значения z. Таким образом, в конце программы у вас есть только одно значение в z для печати. Вам нужно начать с пустого списка, а затем добавить каждый элемент в z, если он не является 3. В качестве альтернативы вы можете распечатать каждое число по мере его обработки.