2016-07-31 76 views
2

我似乎有我的列表生成腳本的問題。我試圖將字符串轉換爲字符串列表的列表,以便在特定的功能中使用它。Python - 使用列表()和操作列表

例如,我想將字符串 'abc'轉換爲:[['a'],['b'],['c']]。 所以我寫的劇本:

s='some string' 
t=[[0]]*len(s) 
for i in range(len(s)): 
    t[i][0] = list(s)[i] 
return t 

的問題是,這種返回[['g'],['g'],..,['g']]而不是[['s'],['o'],..,['g'])

我發現了另一種方法來實現,但我似乎無法找到此腳本的問題。所以,如果任何人都可以幫助我,我會非常感激。提前致謝。

+0

我明白了,謝謝你們:)。 –

回答

3

這是一個典型的錯誤:[[0]]*n創建了一個n引用一個唯一對象[0]的列表。使用它來創建一個n不同對象的列表,全部等於[0][[0] for i in range(n)]。這樣,你可以改變它們的值而不影響其他值。

5

[[0]] * len(s)不會做你認爲它,認爲這是更好的方法:

s = 'abc' 
li = [[ch] for ch in s] 
print(li) 
>> [['a'], ['b'], ['c']] 
+0

您可以在理解中添加一個條件來忽略空白,以便只包含所有非空白字符。但我想這也取決於預期哪些字符將保留在列表中。 – idjaw