连接列表的最后和第一个值

时间:2017-07-27 11:36:56

标签: python list

我有一个数字列表,比如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(但我做了!),或者我可能没有在正确的位置定义它(我不知道我应该在哪里定义它然后)。另一方面,这是连接列表的最后和第一个值的方法吗?

2 个答案:

答案 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)