Python-合并两个2D列表,覆盖其中一个的值
我有两个,两维的列表Python-合并两个2D列表,覆盖其中一个的值,python,list,Python,List,我有两个,两维的列表 list 1 = [[None, None], [None, None], [None, None]] list 2 = [[1, 2], [3, 4]] 所需输出为 list 3 = [[1, 2], [3, 4], [None, None]] 如果有一个更简单的解决方案,我这样做是因为我并不总是拥有列表中第三个元素的数据。我需要列表中始终有三个第一级项目。我正在尝试阻止脚本抛出超出范围的错误 希望通过一些额外的上下文来解决以下问题 在我的应用程序中,当数据库查询返回
list 1 = [[None, None], [None, None], [None, None]]
list 2 = [[1, 2], [3, 4]]
所需输出为
list 3 = [[1, 2], [3, 4], [None, None]]
如果有一个更简单的解决方案,我这样做是因为我并不总是拥有列表中第三个元素的数据。我需要列表中始终有三个第一级项目。我正在尝试阻止脚本抛出超出范围的错误
希望通过一些额外的上下文来解决以下问题
在我的应用程序中,当数据库查询返回放入列表的结果时,就会出现这种情况,例如“最大的10个问题”。有时候事情并不那么糟糕,只有9个问题
当应用程序的另一部分查找第10个问题(Flask网站)时,它抛出错误。Try/Except确实有效,但会很重
所以我需要一个解决方案,我可以创建一个占位符值列表,并用数据覆盖它们(如果可用)
接受的解决方案只需一行代码就可以很好地工作。我想这就是你的意思
list_3 = [ list_2[i] if i < len(list_2) else e for i,e in enumerate(list_1) ]
list_3=[list_2[i]if i
这里是没有列表理解的等价物
list_3 = list()
for i,e in enumerate(list_1):
if i < len(list_2):
list_3.append(list_2[i])
else:
list_3.append(e)
list_3=list()
对于枚举中的i,e(列表1):
如果i
我想这就是你的意思
list_3 = [ list_2[i] if i < len(list_2) else e for i,e in enumerate(list_1) ]
list_3=[list_2[i]if i
这里是没有列表理解的等价物
list_3 = list()
for i,e in enumerate(list_1):
if i < len(list_2):
list_3.append(list_2[i])
else:
list_3.append(e)
list_3=list()
对于枚举中的i,e(列表1):
如果i
您不需要创建新列表。只需使用以下内容访问list2
list2[10] if 10 < len(list2) else [None, None]
list2[10]如果10
我使用的指数如下10,但在您的情况下,它很可能是一个变量:
list2[i] if i < len(list2) else [None, None]
list2[i]如果我
您不需要创建新列表。只需使用以下内容访问list2
list2[10] if 10 < len(list2) else [None, None]
list2[10]如果10
我使用的指数如下10,但在您的情况下,它很可能是一个变量:
list2[i] if i < len(list2) else [None, None]
list2[i]如果我 < /代码> 如果您想对两个列表做些事情,请考虑使用<代码> ItRealths.IZIPuxLime来组合它们。
In [1]: list1 = [[None, None], [None, None], [None, None]]
In [2]: list2 = [[1, 2], [3, 4]]
In [3]: import itertools
In [8]: [a for a, b in itertools.izip_longest(list2, list1, fillvalue=[None, None])]
Out[8]: [[1, 2], [3, 4], [None, None]]
< P>注意,在Python 3中,名称是“代码> ItTrimeS.ZIPuxLime./P>>P>如果您想对两个列表做一些事情,请考虑使用<代码> ItRealths.IZIPixLime来组合它们。
In [1]: list1 = [[None, None], [None, None], [None, None]]
In [2]: list2 = [[1, 2], [3, 4]]
In [3]: import itertools
In [8]: [a for a, b in itertools.izip_longest(list2, list1, fillvalue=[None, None])]
Out[8]: [[1, 2], [3, 4], [None, None]]
请注意,在Python 3中,名称为itertools.zip\u longest
您可以通过以下方式执行此操作:
list_3 = list_2 + list_1[len(list_2):]
但我不确定需要做什么。您可以这样做:
list_3 = list_2 + list_1[len(list_2):]
但我不确定需要做什么。我不确定我是否完全理解您的问题,但我想您可能希望:
list1 = [[None, None], [None, None], [None, None]]
list2 = [[1, 2], [3, 4]]
list3 = list2 + list1[len(list2):]
在第三行中,list2中的所有元素将替换list1中的len(list2)
元素,但保留其余元素不变。如果这是您想要的,您应该确保列表1的长度不小于列表2,否则,它将引发索引器我不确定我是否完全理解您的问题,但我想您可能需要:
list1 = [[None, None], [None, None], [None, None]]
list2 = [[1, 2], [3, 4]]
list3 = list2 + list1[len(list2):]
在第三行中,list2中的所有元素将替换list1中的len(list2)
元素,但保留其余元素不变。如果这是您想要的,您应该确保列表1的长度不小于列表2,否则,它将引发索引器
您可以使用一个生成器,它首先从列表2
生成元素,然后生成无
值。然后,只需从生成器中获取前3个元素
from itertools import chain, islice, repeat
list_2 = [[1, 2], [3, 4]]
list_3 = list(
islice(
chain(
list_2,
repeat(None)
),
3))
但您可能面临一个典型的数据丢失问题。如果你要处理大量数据,我建议你使用熊猫。以下是Pandas文档中的相关文本:您可以使用一个生成器,该生成器首先从列表2
生成元素,然后生成无
值。然后,只需从生成器中获取前3个元素
from itertools import chain, islice, repeat
list_2 = [[1, 2], [3, 4]]
list_3 = list(
islice(
chain(
list_2,
repeat(None)
),
3))
但您可能面临一个典型的数据丢失问题。如果你要处理大量数据,我建议你使用熊猫。以下是熊猫文档中的相关文本:为什么[[1,2],[3,4],[None,None]]
?我也没有看到任何覆盖?您也可以使用try/except来避免任何错误。您能告诉我们产生超出范围错误的代码吗?你可能做错了什么。你能举更多的例子说明你想做什么吗?为什么[[1,2],[3,4],[None,None]
?我也没有看到任何覆盖?您也可以使用try/except来避免任何错误。您能告诉我们产生超出范围错误的代码吗?你可能做错了什么。你能举更多的例子说明你想做什么吗?