【问题标题】:How to add a value in a nested list that corresponding to another list?如何在嵌套列表中添加与另一个列表对应的值?
【发布时间】:2019-03-27 09:42:59
【问题描述】:

我正在建立一个线性连接,我有两个列表:

a = [1,1,1,2,2,3,3,3,4]
b = [1,3,7,2,3,4,7,8,9]

a[i]b[i]相关

我将b 重新组合为c

c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]

我尝试在c的每个子列表中添加a的对应值得到:

d = [[1, 1, 3], [1, 7], [2 ,2, 3], [3, 4], [3, 7, 8], [4, 9]]

c的每个子列表中最初在b中的第一个值与a相关,如c[0][0] = b[0],并将a[0]添加到c[0]c[1][0] = b[2],因此添加a[2]c[1].

如果c 中的子列表且子列表的第一个值 = b[i],则将a[i] 添加到每个子列表。

我被困住了。

【问题讨论】:

  • 你能详细说明你想要做什么吗? A和B是什么关系。为什么d只有三个1s而A和B一共有四个?
  • 对于c 中的每个子列表,如果sublist[0] = b[i],则将a[i] 添加到sublist。可以吗?

标签: python list iteration


【解决方案1】:

您可以从a 构建一个迭代器,并使用itertools.islice 获取它的连续切片,以便根据c 中子列表的长度使用它,但只选择每个切片中的第一项:

from itertools import islice

a = [1,1,1,2,2,3,3,3,4]
c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]
a_ = iter(a)

[[list(islice(a_, len(j)))[0]] + [i for i in j] for j in c]

输出

[[1, 1, 3], [1, 7], [2, 2, 3], [3, 4], [3, 7, 8], [4, 9]]

【讨论】:

    【解决方案2】:

    另一种方法。基本方式。

    #!/bin/python
    
    a = [1,1,1,2,2,3,3,3,4]
    
    b = [1,3,7,2,3,4,7,8,9]
    
    c = [[1, 3], [7], [2, 3], [4], [7, 8], [9]]
    
    #d = [[1, 1, 3], [1, 7], [2 ,2, 3], [3, 4], [3, 7, 8], [4, 9]]
    
    element_count=0
    d=[]
    for x in c:
        print (a[element_count])
        print(x)
        d.append([a[element_count]]+x)
        element_count+=len(x)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多