【问题标题】:Python: Iterating over sub-listsPython:迭代子列表
【发布时间】:2015-05-15 05:41:58
【问题描述】:

我有一个项目,我正在尝试编辑部分嵌套列表。 假设我从这个列表开始:

[[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]

我想遍历这个列表的一部分,以便得到一个像这样在中心是正方形的输出。

[[0, 0, 0, 0, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 0, 0, 0, 0]]

我尝试使用 for 循环遍历列表并使用嵌套 for 循环遍历子列表。然而,这并没有奏效。我得到的是这个列表:

[[0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0]]

这是我的代码:

list = [[0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0]]

for i in range(1,4):
    for j in range(1,4):
        list[i][j] = 1

为什么这段代码不起作用?我已经搜索了一两天,但没有找到答案。提前感谢您花时间回答或评论的人。

【问题讨论】:

  • 我强烈推荐 numpy。

标签: python for-loop nested-loops nested-lists


【解决方案1】:

您发布的代码运行良好:

>>> list = [[0, 0, 0, 0, 0],
...         [0, 0, 0, 0, 0],
...         [0, 0, 0, 0, 0],
...         [0, 0, 0, 0, 0],
...         [0, 0, 0, 0, 0]]
>>> 
>>> for i in range(1,4):
...     for j in range(1,4):
...         list[i][j] = 1
... 
>>> pprint(list)
[[0, 0, 0, 0, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 0, 0, 0, 0]]

检查您的代码是否真的与您在此处发布的内容相同。

【讨论】:

  • 谢谢。我一定是打错了什么。令人惊讶的是,它滑倒了这么多次。我仍然不知道我弄错了代码的哪一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2014-06-24
相关资源
最近更新 更多