【问题标题】:python make multiple lists of one listpython制作一个列表的多个列表
【发布时间】:2020-10-27 12:18:31
【问题描述】:

PYTHON 我有一个list,我想从中创建一个多个 列表,用于我想要的每个项目创建一个列表其他项目

我的初始清单:

cities = ['Chevalley', 'A.Gharmoul 1', 'El Madania']

那么我希望输出是:

[
  ['Chevalley', 'A.Gharmoul 1'],
  ['Chevalley','El Madania'],
  ['A.Gharmoul 1', 'El Madania']
]

【问题讨论】:

标签: python python-3.x list python-2.7


【解决方案1】:

以下代码将帮助您创建所需的结果列表:

items = ['Chevalley', 'A.Gharmoul 1', 'El Madania']
res = [[items[i],items[j]] for i in range(len(items)) for j in range(i+1, len(items))]
print(res)

【讨论】:

    【解决方案2】:
    result_list = []
    for i in ['Chevalley', 'A.Gharmoul 1', 'El Madania']:
        for j in ['Chevalley', 'A.Gharmoul 1', 'El Madania']:
            if i != j:
                result_list.append([i, j])
    

    它应该遍历每个可能的配对,同时忽略与自身配对的元素。

    【讨论】:

      【解决方案3】:

      虽然这不一样,但它与您正在寻找的非常接近。

      import itertools
      a = ['Chevalley', 'A.Gharmoul 1', 'El Madania']
      result = list(itertools.combinations(a,2)) # number is the amount of items you want in the resultant tuple
      

      结果将在列表中包含长度为 2 的元组。

      【讨论】:

        【解决方案4】:

        下面应该这样做:

        l  = ['Chevalley', 'A.Gharmoul 1', 'El Madania']
        n = [[l[i], l[j]] for i in range(0, len(l) - 1, 1) for j in range(i + 1, len(l), 1)]
        

        n 将等同于:

        [['Chevalley', 'A.Gharmoul 1'],
         ['Chevalley', 'El Madania'],
         ['A.Gharmoul 1', 'El Madania']]
        

        【讨论】:

          【解决方案5】:

          嵌套的 for 循环完成你的工作

          list1 =['Chevalley', 'A.Gharmoul 1', 'El Madania']
          
          output =[]
          
          for i in range(len(list1)):
           for j in range(i+1,len(list1)):
            output.append([list1[i],list1[j]]) 
          
          print(output)#[['Chevalley', 'A.Gharmoul 1'],['Chevalley','El Madania',['A.Gharmoul 1', 'El Madania']]
          

          【讨论】:

            【解决方案6】:

            您可以使用 itertools 并将输出元组转换为列表:

            import itertools
            
            new = [ list(el) for el in itertools.combinations(['Chevalley', 'A.Gharmoul 1', 'El Madania'], 2) ]
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-07
              • 2019-03-10
              • 1970-01-01
              • 2021-12-14
              • 2021-06-04
              相关资源
              最近更新 更多