我有一个数字列表,比如list= [0,1,0,1,0]
。我必须检查列表中的每个元素i是否等于它的前一个元素和它之后的元素,如果是,则将其值更改为前一个元素。我把这个任务表示为:
i-1=x
i+1=y
for i in list:
if x=y and i!=x
i=x
elif x!=y
i=i
但我需要连接列表中的第一个和最后一个元素,以便i=list[0]
:x=list[4]
(和y=list[2]
)。我的想法是定义另一个这样的循环:
if i=list[0]
x=list[4]
但是当我执行程序时,它会写x=list[0]
是“语法错误:语法无效”。首先,我不太清楚为什么会这样:我认为我没有定义x(但我做了!),或者我可能没有在正确的位置定义它(我不知道我应该在哪里定义它然后)。另一方面,这是连接列表的最后和第一个值的方法吗?
答案 0 :(得分:0)
试试这个:
i-1=x
i+1=y
for i in list:
if x==y and i!=x :
i=x
elif x!=y
i=i
=
表示赋值,而==
表示相等测试。 python中的冒号:
定义了作用域的开头(缩进),所以你需要:' after an
if`来定义它的作用域块。
答案 1 :(得分:0)
这是一个完全符合您要求的代码。
test=[0,1,0,1,0] # don't use 'list' as variable name
for j in range(len(test)): # j=index of current
i = (j-1) % len(test) # i=index of previous
k = (j+1) % len(test) # k = index of next
if test[i] == test[k]: # equal to previous and next
test[j] = test[i] # change to previous
print(test)