Python:在列表中指定位置?

时间:2014-11-09 18:21:18

标签: python

我有三个列表,其形式为:

Day: [1, 1, 1, 2, 2, 2, 3, 3, 3, ..... n, n, n]
Wavelength: [10, 20, 30, 10, 20, 30, 10, 20, 30, ..... 10, 20, 30]
Flux: [1, 2, 3, 1, 2, 3, 1, 2, 3, ..... 1, 2, 3]

我想拆分列表,以便列出“Day”值为1的列表部分并运行一个函数,然后重复该过程并一直这样做,直到完成为止所有n天。

我尝试将它们分成列表,目前有:

x=[]
y=[]
z=[]

for i in day:
    if Day[i] == Day[i+1]:
        x.append(Day(i))
        y.append(Wavelength[i])
        z.append(Flux[i])
        i+=1
    else "integrate over the Wavelength/Flux values where the value of Day is 1"
        i+=1

这不起作用,我不相信我会以最好的方式去做。我对编程比较陌生,所以找到并修复错误还需要我很长时间!

1 个答案:

答案 0 :(得分:1)

如果您使用zip()将三个列表合并为一个元组列表,则可以针对您关注的每一天对其进行过滤。 (如果您拥有大量数据并且需要比您的方法更多的内存,这不是特别有效,但具有简洁,相当pythonic的优点,并且我相信可读。)

data = zip(day, wavelength, flux)
for d in range(min(day), max(day)+1):
    print d, [ datum for datum in data if datum[0] == d ]

您可以将该列表(print列表理解的输出)传递给您需要在数据上运行的任何函数(可能使用[…],而不是d。那时你正在处理。)