【问题标题】:Replace values at a specific position in a list替换列表中特定位置的值
【发布时间】:2016-01-06 00:18:30
【问题描述】:

也许这是一个非常愚蠢的问题:

list = [1,1,1,1,1,1,1,1,1,1..., 1]

现在我想用 0 替换假设 list[3:7][start:stop](不包括停止)中的值。

list[1,1,1,0,0,0,0,1,1,..., 1]

如果我尝试这样做,我会得到一个错误:

"TypeError: can only assign an iterable"

我需要for 循环来获取迭代器吗?

解决了我的列表问题:

list[column][position_line_xi:position_line_xj] = [z]*(position_line_xj - position_line_xi)

【问题讨论】:

  • 你可以用 lst[3:6] = [0]*4
  • 仅供参考,切片[3:6] 的长度为3。如果您想要从索引 3 开始的 4 元素,则切片将为 [3:7]
  • 是的,当然,谢谢

标签: python list replace


【解决方案1】:

试试这个方法:

>>> my_list = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> my_list[3:6] = [0] * 3
[1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1]

【讨论】:

  • 效果很好。但是现在我遇到了一个问题,我的列表是一个列表列表:tilemap_1 = [[random.choice(resources) for w in range(screen_width)] for h in range(screen_height)]。所以它不会改变任何事情:( - 对不起,我对编程很陌生。
  • 你实际上想要改变什么?
  • 我有一个不同数字的列表(Tilemap)。每个数字代表一种颜色。现在我想在列表的特定区域将值更改为另一个值(就像我的问题一样)。但是因为我的列表看起来不像 [a, ..., z] 但是 [[a, ..., z]] 提到的方法不会影响任何东西。因此,更改值后,列表看起来完全一样。我希望我表达得足够清楚(我不是以英语为母语的人)。
【解决方案2】:

您可以分配给列表的一部分。

>>> start = 3
>>> end = 6
>>> l[start:end] = [0]*(end-start)
>>> l
[1, 1, 1, 0, 0, 0, 1, 1, 1, 1]

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2021-10-28
    • 2019-02-18
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多