【问题标题】:Convert Non-List Type to List Directly将非列表类型直接转换为列表
【发布时间】:2017-11-05 12:48:07
【问题描述】:

我有一个项目列表,我实际上需要成为一个列表列表。我见过的所有转换方法都将非列表项转换为单个字符列表["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

【问题讨论】:

    标签: python string list type-conversion integer


    【解决方案1】:

    您可以使用列表推导:

    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])
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      >>> 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]]
      

      【讨论】:

      • 请参阅我的帖子中的编辑!
      【解决方案3】:

      你可以使用list-comprehension:

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

      【讨论】:

      • 好答案。我在玩isinstance,但无法让它工作。您的回答有效,并在未来通过isinstance 为我指明了正确的方向。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      相关资源
      最近更新 更多