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

Python 连接列表的最后一个值和第一个值,python,list,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])。我的想法是定义

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

试试这个:

i-1=x

 i+1=y

 for i in list: 

    if x==y and i!=x :

     i=x

      elif x!=y 

        i=i

=
表示分配,而
=
表示平等测试。python中的冒号
定义了作用域的开头(缩进),因此需要在if`之后加上
:'来定义其作用域块。

下面是一个完全按照您的要求执行的代码

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)

单个等号是赋值,而不是比较,并且您缺少冒号。感谢您的编辑和回答!;)我通常如何使代码的某些部分看起来像这里的代码?这是标记,每行的开头需要四个空格作为代码块。您可以选择粘贴的代码并点击Ctrl-K或
{}
按钮。有关更多信息,请参阅格式化帮助(通过
按钮)。谢谢,这非常有用!:)@杰列纳克维扬。不客气点击左边的复选标记接受我的答案,这样其他人也会得到同样的帮助,谢谢。没错!现在,我成功地执行了代码,它只给了我具有相同值的列表,尽管很明显它经历了所有的“i”。作为您的代码,我不明白您为什么需要%len(test)?
%len(test)
称为模算术(搜索该术语)。这正是允许连接第一个值和最后一个值的内容。例如,当j等于0时,我将是-1(这在python中仍然有效,因为它接受-1作为索引),写入
(j-1)%5
将使索引值在0到4之间。但是,当j等于最后一个索引时(在您的示例中,当j=4),k将为5,并导致“越界”错误。看看好吧,我想这正是我需要的。我还有一个问题:你很难过一个代码应该是有效的(引用)“它是等于前面的值还是后面的值”。我不太确定你是否理解我的问题所在。所以,让我再解释一遍(也许我不理解你)。当前值只有在前一个值与后一个值相等时才需要更改。如果这些值不相等,那么当前值必须保持不变。好的,有了这个说明,您应该编写
If test[i]==test[k]:
。你的代码应该可以工作了。我试过你的例子,它给出了
0,0,0,0,0
。我编辑了我的答案。非常感谢,这真的很有帮助:)