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 - 如何用不同的值替换相邻的列表元素的主要内容,如果未能解决你的问题,请参考以下文章