gpt4 book ai didi

python - 用其他数组填充二维数组的一维

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:51 24 4
gpt4 key购买 nike

我有两个列表:

a=[[10, 0], [12,1], [13, 8], [2, -3]]
b=[1, 2, -30, 404]

我想用 b 中的值替换 a[*][1] 值,这样我的结果如下:

[[10, 1], [12, 2], [13, -30], [2, 404]]

一个明显的方式(对我来说,是一个真正的 C 程序员)是这样的:

for i in range(len(a)):
a[i][1]=b[i]

但不知何故,这感觉不是很 pythonic。

我该如何以 Pythonic 方式做到这一点?

此外,b 列表的元素可能多于或少于a。如果较少,则 a 中的剩余元素应保持不变。

a=[[10, 0], [12,1], [13, 8], [2, -3]]
b=[10, 20]

result=[[10, 10], [12,20], [13, 8], [2, -3]]

如果它们更多,我想添加具有默认第一个元素的新条目(例如 None)

a=[[10, 0], [12,1]]
b=[100, 200, -30, 404]

result=[[10, 100], [12,200], [None, -30], [None, 404]]

这可以通过列表推导来实现吗?

最佳答案

enumerate 通常被认为是循环列表索引范围的 pythonic 替代方法。除此之外,您的解决方案确实没有任何不符合 Python 的地方。

for i, v in enumerate(b):
try:
a[i][1] = v
except IndexError:
a.append([None, v])

或者,使用迭代器来避免多次 try/catch 触发器:

bnumer = enumerate(b)
for i, v in bnumer:
try:
a[i][1] = v
except IndexError:
break

# extend the list with the remaining default values from b
a.extend([None,v] for v in bnumer)

关于python - 用其他数组填充二维数组的一维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com