当前位置: 首页 > 面试题库 >

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

韩夕
2023-03-14
问题内容

如果我有清单:

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

然后声明另外两个列表:

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

我怎么可以to_modify作为指数的元素indexes,然后设置相应的元素to_modifyreplacements,即运行后,indexes应该是[0,0,3,0,1,0]

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

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

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


问题答案:

您的代码最大的问题是它不可读。Python代码规则第一,如果它不可读,没人会花足够长的时间看得出来所有有用的信息。始终使用描述性变量名。几乎没有发现代码中的错误,让我们以好名字,慢动作重播的方式再次来看一下:

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循环来实现。



 类似资料:
  • 问题内容: 我有一个字符串,假设我需要替换索引3处的char。如何通过指定索引来替换char? 我需要类似的东西 问题答案: 在JavaScript中,字符串是 不可变的 ,这意味着您可以做的最好的事情是创建一个具有更改内容的新字符串,然后将变量分配为指向它。 您需要自己定义函数: 并像这样使用它:

  • 有没有一个函数可以在字符串的特定索引处替换一个字符串内的一个字符串一次?示例: 结果输出将是“我的文本是我的文本,你的大文本”

  • 我在Javascript中有一个对象,它有一些条目,如: 我想替换键像: 但我得到了错误:forecasts.map不是一个函数 我已经检查过了,但它不起作用。我如何更换这些钥匙?

  • 问题内容: 我正在尝试替换字符串中特定索引处的字符。 我正在做的是: 这给出了一个错误。有什么方法可以做到这一点? 问题答案: 字符串在Java中是不可变的。你不能更改它们。 你需要创建一个新字符串并替换字符。 或者,你可以使用StringBuilder:

  • 问题内容: 我可以在熊猫的特定列索引处插入列吗? 这会将列作为的最后一列,但是没有办法告诉它放在开始处吗? 问题答案: 参见文档:http : //pandas.pydata.org/pandas- docs/stable/genic/pandas.DataFrame.insert.html 使用loc = 0将在开头插入

  • 问题内容: 我有一个清单。例如, 如果我想按内部列表的字符串字段对外部列表进行排序,那么你将如何在python中执行此操作? 问题答案: 这是itemgetter的工作 也可以在此处使用lambda函数,但是在这种简单情况下,lambda函数的运行速度较慢