Python - 如何用不同的值替换相邻的列表元素

Posted

技术标签:

【中文标题】Python - 如何用不同的值替换相邻的列表元素【英文标题】:Python - How to replace adjacent list elements with a different value 【发布时间】:2016-11-30 13:20:56 【问题描述】:

我一直在试图弄清楚如何定位和更改以列表的单个元素为边界的区域的值,而不影响需要设置边界的元素值。

这就是我想要实现的目标:

之前:

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

之后:

[[9,9,9,9,0],
 [9,1,1,9,9],
 [9,1,9,1,9],
 [9,9,1,9,9],
 [0,9,9,9,0])

我只需要知道我是否主要需要for 循环以及if/else 语句,或者我是否需要一个单独的库来解决这个问题。

提前感谢您的帮助!

【问题讨论】:

你可以用基本的python语法解决这个问题 这只是一个问题......你只是在问如何使用python,先看看周围 这实际上更适合打码高尔夫,因为他排除了距离为 2 的任何东西 :) 并且措辞不好,但我想我想解决它 【参考方案1】:

是的,你可以通过 if/else 和 for 循环:

 a = [[0,0,0,0,0],
      [0,1,1,0,0],
      [0,1,0,1,0],
      [0,0,1,0,0],
      [0,0,0,0,0]]

 to_replace = 1
 replacement = 9 

 for i in range(len(a)):
     for x in range(len(a[i])):
        if a[i][x] == to_replace:
            for pos_x in range(i-1,i+2):
                for pos_y in range(x-1,x+2):
                    try:
                        if  a[pos_x][pos_y] != to_replace:
                            a[pos_x][pos_y] = replacement
                    except IndexError:
                        print "Out of  list range" #may happen when to_replace is in corners
 for line in a:
     print line 

 #this will give you 
 # [9, 9, 9, 9, 0]
 # [9, 1, 1, 9, 9]
 # [9, 1, 9, 1, 9]
 # [9, 9, 1, 9, 9]
 # [0, 9, 9, 9, 0]

【讨论】:

非常感谢!!!!感谢您理解我的问题!抱歉给大家说的很烂!再次感谢您!【参考方案2】:

for 循环和if/else 语句就足够了。

【讨论】:

抱歉,只是直接回答他的问题。他似乎没有要代码。

以上是关于Python - 如何用不同的值替换相邻的列表元素的主要内容,如果未能解决你的问题,请参考以下文章

如何用另一个列表元素随机替换列表元素?

python中如何把相邻的字符交换位置

如何用 Python 列表中的内容替换字符串中找到的单词

如何用相邻值替换数据框中的 NA(缺失值)

如何用dict \ df在一列上用条件替换列列表

如何将List里的一个值替换成我想的值