2012-10-13 100 views
1
muutujad = list(input("Muutujad (sisesta formaadis A,B,C,...): ")) 
while "," in muutujad == True: 
    muutujad.remove(",") 
print (muutujad) 

我的大腦說,此代碼應除去所有從列表中,並在端 列表應該只包含[’A」的逗號,‘B’ ,「C」....]但它仍然包含所有元素。當我試圖在線顯示代碼時,它說[muutujad]中的[「,」]總是False,但是當我從控制檯檢查相同的命令時,它說它是True。我知道這是一個簡單的問題,但我想了解基礎知識。從列表中刪除包含的所有元素(「‘)

+0

在python中,一個字符串是不可變的。您必須重新分配值「muutujad = muutujad.remove(」,「)」以保存更改。 –

回答

3

您可以使用列表中理解,而不是while循環:

muutujad = [elem for elem in muutujad if elem != ','] 

if測試本身也是錯誤的。你從來沒有在任何情況下需要測試== Trueif,那是什麼if確實。但是,在你的情況,你測試以下:

("," in muutujad) and (muutujad == True) 

這是總是會是假的。在Python中,像in==這樣的比較運算符是chained。離開== True將使您的while循環工作好得多。

我不確定你明白當你在字符串上調用list()時會發生什麼;這將其分割成單個字符:

>>> list('Some,string') 
['S', 'o', 'm', 'e', ',', 's', 't', 'r', 'i', 'n', 'g'] 

如果你想拆分輸入用逗號分隔的元素,用.split()方法來代替,而且你不會有根本刪除逗號:

>>> 'Some,string'.split(',') 
['Some', 'string'] 
+0

謝謝!但是請閱讀最後一條評論,我想知道,我的代碼中存在什麼問題。 –

+0

所以你首先將一個字符串轉換爲一個列表,然後你創建一個新列表來消除逗號? – Ant

+0

確切地說,即時使用while命令逐個刪除所有逗號,直到muutujad中的「,」== False –

-1

什麼list("Muutujad (sisesta formaadis A,B,C,...): ".replace(' ', ''))

Downvoter:我的意思是:這是你如何做到從字符串中刪除逗號。

您不會將您的輸入從字符串轉換爲列表,然後從列表中刪除逗號,這很荒唐。

你這樣做:list(input('...').replace(' ', '')) 或者你使用split,如上所述。

+0

是的,現在我明白,逐個刪除逗號是一個愚蠢的想法,但我只是在le Python Python,所以這是我頭上彈出的第一個東西 –

+0

不用擔心,只是爲了讓你明白:-) – Ant

+0

Downvoters:我應該改進哪一部分答案? – Ant

1

這裏最好的選擇是簡單地解析字符串以更好的方式:

>>> muutujad = input("Muutujad (sisesta formaadis A,B,C,...): ").split(",") 
Muutujad (sisesta formaadis A,B,C,...): A, B, C 
>>> muutujad 
['A', ' B', ' C'] 

str.split()是你正試圖在這裏做一個更好的選擇。

+0

是的,拆分命令似乎在我的代碼中效果最好:)謝謝! –

相關問題