首页 > 解决方案 > 根据其他列表中的条件创建列表

问题描述

我有以下列表:

    I = [1, 2, 3]
    U = [4, 5, 6]
    N = [7, 8, 9]

我想得到以下信息:

    for each number in list N I want to get the group of lists like that:
    for N[0] = 7  > P = [I[0], U[0], 0] = [1, 4, 0, 0, 0, 0]
    for N[1] = 8 > P = [I[0], I[1], U[0], U[1], 0, 0] = [1, 2, 4, 5, 0, 0]
    for N[2] = 9 > P = [I[0], I[1], I[2], U[0], U[1], U[2]] = [1, 2, 3, 4, 5, 6]

这个想法是,对于列表 NI 中的第一个元素,想要获取列表 P,它将具有列表 I 和 U 中的第一个元素,其余的将为零(长度应该始终相同并且等于 len(I) + len(U)。在我的示例中,出于演示目的,列表 N 的长度等于 3,但实际上它可以是 1000 甚至更多。所以我需要一个算法来遍历列表 N 并根据值创建新列表和列表 I 和 U 中的位置。这可能听起来很尴尬,请询问您是否需要澄清。

标签: pythonlistalgorithmloopstuples

解决方案


最终代码如下:

i = [1, 2, 3]
u = [4, 5, 6]
n = [7, 8, 9]
l = [i, u] # This works with any number of lists :)
p = []
#Get the total length of all the lists in l
total = 0
for item in l:
  total += len(item)

for y in range(0, len(n) + 1):
  _p = []
  for item in l:
   for x in range(0, y):
    _p.append(item[x])
  for item in range(0, total - len(_p)):
    _p.append(0)
  p.append(_p)
p.pop(0) #Removes mystery empty element

print(p)

推荐阅读