2016-07-31 117 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