如何以pythonic方式切片列表?

时间:2019-04-03 15:15:10

标签: python slice

我有以下输入内容:

[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.
  15.  16.  17.  18.  19.]

预期输出:

[  0.   0.   0.   0.   0.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.
   0.   0.   0.   0.   0.]

当前代码:

from numpy import linspace

input_list  = linspace(0,20,20, endpoint = False)
input_list[:5] = 0
input_list[15:] = 0
print(input_list)

我想知道是否还有更优雅/蟒蛇的方式?

2 个答案:

答案 0 :(得分:2)

我的意思是,如果您只想要该范围,则可以执行此操作。

list(range(5,15))

或者如果您想忽略前几个:

[0]*5+input[5:15]+[0]*5

或者是条件性

[x if 4<x<15 else 0 for x in input ]

答案 1 :(得分:0)

尝试包含列表:

l1 = [  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.
15.  16.  17.  18.  19.]
l2 = [x for x in l1 if x in range(5, 15) else 0.]