python - 根据其他列表中的条件创建列表
问题描述
我有以下列表:
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 中的位置。这可能听起来很尴尬,请询问您是否需要澄清。
解决方案
最终代码如下:
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)
推荐阅读
- node.js - Not able to install Angular CLI in windows system using latest npm
- gemfire - Pivotal Gemfire 相对于 Apache Geode 的优势
- android - Ionic Cordova QrScanner 布局不一致?
- python-3.x - 我如何遍历两个不同的列表并创建一个新列表,该列表将列表作为元素,哪些元素具有两个列表中的内容
- python - 将两个轴上的数据框列表组合在一行中
- office-js - 我可以在 Excel JavaScript API 的自定义函数中发出 POST 请求吗?
- python - 如何阻止 Anaconda Navigator 和 Spyder 将库放入用户文件夹
- google-bigquery - BigQuery - REGEXP_CONTAINS 删除 NULL 值
- python-3.x - 大熊猫中的交叉表标准化
- javascript - Angular 应用程序中未捕获的 TypeError