2017-06-04 90 views
1

我有一个项目列表,我需要实际上是列表的列表。我见过的所有转换方法都将非列表项转换为单个字符列表["12", "cat", 87][['1', '2'], ['c', 'a', 't'], ['8', '7']]而不是[['12'], ['cat'], [87]]。以下作品,直接将非列表类型转换为列表

v_Data = ["12", "cat", 87] 
for index, i in enumerate(v_Data): 
    if type(i) != list: 
     v_Data[index] = [i] 
print(v_Data) ## [['12'], ['cat'], [87]] 

有没有更好的方法来做到这一点?

使用Python 2.7

回答

3

您可以使用list-comprehension

v_Data = ["12", "cat", 87] 

[v if isinstance(v, list) else [v] for v in v_Data] 
# [['12'], ['cat'], [87]] 
+1

很好的回答。我正在玩'isinstance',但无法让它工作。你的回答是有效的,将来会用'isinstance'指向正确的方向。谢谢。 – JayJay123

1

,你可以这样做:

>>> a=["12", "cat", 87] 
>>> b=[[i] for i in a] 
>>> b 
[['12'], ['cat'], [87]] 

编辑: 是否已经有名单列表:

>>> a=["12", "cat", 87, [23]] 
>>> b=[[i] if type(i) is not list else i for i in a] 
>>> b 
[['12'], ['cat'], [87], [23]] 
+0

请参阅编辑我的文章! – Dadep

+0

谢谢你的回答。 – JayJay123

0

您可以使用列表理解:

v_Data = ["12", "cat", 87] 

new = [[x] for x in v_Data] 

类似:

v_Data = ["12", "cat", 87] 

new = [] 
for x in v_Data: 
    new.append([x])