使用基于变量的索引切片列表

时间:2014-07-08 17:52:35

标签: python variables indexing splice

如何使用基于变量的索引对列表进行切片?

splitMe = range(0,10)

startPlace = 3
endPlace = 5

splitMe[startPlace:endPlace] #<------This is essentially what I need

这样我可以在startPlace和endPlace中输入不同的数字并获得不同的切片。这可能看似微不足道,但我正在削减230,000行数据。 startPlace和endPlace背后的计算与日期和时间有关。

这就是我现在所拥有的:

#Find matching data with datetime
for a, line in enumerate (Time):
    if line == startDate:
        print "Slice starts at:", a

for c, line in enumerate (Time):
    if line == endDate:
        print "Slice ends at:", c

#Create lists
slice_laser_c = [x for x in laser_C if a <= x < c]

修改 当我运行此代码时,它会打印“Slice starts at:0”和“Slice ends at:5”,这正是它应该做的。 结束编辑 当我打印slice_laser_c时,我得到了

[] #<----- Essentially, this is the problem

从简单的意义上讲,这就是正在发生的事情:

big_list = range(0,10)
a = 2
c = 5

BetweenList = [x for x in big_list if a <= x < c]
print BetweenList

2 个答案:

答案 0 :(得分:0)

问题似乎是,当您找到所需的值时,您正在遍历所有Times而不停止。因此,在两个循环结束时ac处于最大值。一旦找到了你想要的值,你可能想要break循环吗?

答案 1 :(得分:0)

为什么不使用Python内置的拼接语法? (也许我没有看到什么)

像:

list = [1,2,3,4,5,6,7,8,9]
a=3
c=7
split_list = list[a:(c+1)] #<-----The +1 is because the splice syntax goes to end-1
print split_list