gpt4 book ai didi

python - 如何替换python列表特定索引处的值?

转载 作者:IT老高 更新时间:2023-10-28 20:43:17 29 4
gpt4 key购买 nike

如果我有一个 list :

to_modify = [5,4,3,2,1,0]

然后声明另外两个列表:

indexes = [0,1,3,5]
replacements = [0,0,0,0]

如何将 to_modify 的元素作为 indexes 的索引,然后将 to_modify 中的对应元素设置为 replacements,即运行后,indexes应该是[0,0,3,0,1,0]

显然,我可以通过 for 循环做到这一点:

for ind in to_modify:
indexes[to_modify[ind]] = replacements[ind]

但是还有其他方法可以做到这一点吗?我可以以某种方式使用 operator.itemgetter 吗?

最佳答案

您的代码最大的问题是它不可读。 Python代码规则第一,如果它不可读,没有人会看它足够长的时间来从中获取任何有用的信息。始终使用描述性变量名称。差点没抓到你代码的bug,用好名字,慢动作回放风格再看一遍:

to_modify = [5,4,3,2,1,0]
indexes = [0,1,3,5]
replacements = [0,0,0,0]

for index in indexes:
to_modify[indexes[index]] = replacements[index]
# to_modify[indexes[index]]
# indexes[index]
# Yo dawg, I heard you liked indexes, so I put an index inside your indexes
# so you can go out of bounds while you go out of bounds.

很明显,当您使用描述性变量名称时,您正在使用来自自身的值来索引索引列表,这在这种情况下没有意义。

此外,当并行遍历 2 个列表时,我喜欢使用 zip 函数(如果您担心内存消耗,也可以使用 izip,但我不是其中之一那些迭代纯粹主义者)。所以试试这个吧。

for (index, replacement) in zip(indexes, replacements):
to_modify[index] = replacement

如果您的问题仅与数字列表有关,那么我会说@steabert 有您正在寻找的 numpy 东西的答案。但是你不能使用序列或其他可变大小的数据类型作为 numpy 数组的元素,所以如果你的变量 to_modify 有类似的东西,你可能最好用 for循环。

关于python - 如何替换python列表特定索引处的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7231204/

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