Python 需要使用切片替换列表中的元素

Python 需要使用切片替换列表中的元素,python,Python,我有一张单子 w = [1, 1, 1, 1, 1, 1, 1, 1, 1] 我需要我的输出如下: w = [1, 4, 2, 4, 2, 4, 2, 4, 1] w[2:-1:2] = [2]*len(w[2:-1:2]) # replace 3rd, 5th, 7th and so on... element with 2 w[1:-1:2] = [4]*len(w[1:-1:2]) # replace 2nd, 4th, 6th and so on... element with 3

我有一张单子

w = [1, 1, 1, 1, 1, 1, 1, 1, 1]
我需要我的输出如下:

w = [1, 4, 2, 4, 2, 4, 2, 4, 1]
w[2:-1:2] = [2]*len(w[2:-1:2]) # replace 3rd, 5th, 7th and so on... element with 2 
w[1:-1:2] = [4]*len(w[1:-1:2]) # replace 2nd, 4th, 6th and so on... element with 3
我知道实现这一点的常规方法,即for循环。有人能告诉我这是如何使用切片的吗?任何帮助都将不胜感激

For循环:

for i in range(1, (len(w) -1):
    if  i%2 == 0:
        w[i] = 4
    else:
        w[i] = 2

您可以这样替换图元:

w = [1, 4, 2, 4, 2, 4, 2, 4, 1]
w[2:-1:2] = [2]*len(w[2:-1:2]) # replace 3rd, 5th, 7th and so on... element with 2 
w[1:-1:2] = [4]*len(w[1:-1:2]) # replace 2nd, 4th, 6th and so on... element with 3
编辑:

我没提那件事

  • 3、5、7等不会影响第一、第二和最后一个元素,因为 属于[2:-1

  • 2,4,6不会影响第一个和最后一个,因为[1:-1

  • 步骤是2,因为:2]


    • 这是一个很奇怪的要求,但你可以这样做:

      w=w[0]+[4如果i%2==0,则为范围(1,(len(w)-1))内的i选择2]+[w[-1]

      通常,每个循环都可以通过这种方式转换为列表理解,但在这种情况下,将其作为循环可能更具可读性

      编辑:您还可以使用元素枚举替换
      range
      函数以获取索引,并忽略实际元素,如下所示(注意,我还颠倒了条件,因为新的切片将索引移动了1):


      [w[0]]+[4如果我%2其他2代表我,u在枚举(w[1:-1])]+[w[-1]]

      Numpy数组或Python列表?你能展示理解和循环吗?请展示你的尝试。这只是一个Python列表。数组在Python中意味着其他东西。请说明您以前是如何做的,以及您所做的任何切片尝试,并对错误进行清楚的解释。