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

时间:2019-01-28 03:53:02

标签: python

我有一个清单

w = [1, 1, 1, 1, 1, 1, 1, 1, 1]

我需要我的输出像这样:

w = [1, 4, 2, 4, 2, 4, 2, 4, 1]

我知道常规方法,即for循环。有人可以告诉我如何使用切片吗?任何帮助将不胜感激。

For循环:

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

2 个答案:

答案 0 :(得分: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,7th等不会影响第一个,第二个和最后一个元素,因为 的 [2:-1

  • 2,4,6不会因为 [1:-1

  • 由于:2],
  • 步骤为2,

答案 1 :(得分:0)

这是一个很奇怪的请求,但是您去了:

Integer id = 17; String user_id = "candidates?job="+id;

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

编辑:您也可以用枚举元素替换w = w[0]] + [4 if i%2 == 0 else 2 for i in range(1, (len(w) -1))] + [w[-1]]函数以获取索引,并忽略实际的元素,像这样(请注意,我也颠倒了条件,因为新的切片移动了索引一位):

range