2017-06-04 56 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])