我有两个列表:x_data,y_data
两者都是86400(x_data是以小时为单位的时间) 我希望能够从7到14小时内取出x的条目,以及y_data中的相应值。
我已经完成了
for i, j in enumerate(x_data):
if ( j < 7 & j > 14):
print i, j
它没有用。我真的不知道该怎么做。我从今天早上开始尝试使用python(尝试使用它而不是IDL)
答案 0 :(得分:2)
答案 1 :(得分:2)
最简单的方法是使用zip
:
for x, y in zip(x_data, y_data):
if 7 < x < 14:
print(x, y)
您可以使用list comprehension将值提取到单独的列表中:
extract = [(x, y) for x, y in zip(x_data, y_data) if 7 < x < 14]
用你正在做的事情:
for i, j in enumerate(x_data):
在每次迭代中,j
是来自x_data
的元素,i
是其索引。您可以使用它来访问y_data
:
if 7 < j < 14:
print(j, y_data[i])
但这两个列表的zip
比较简洁。
答案 2 :(得分:0)
在python中,运算符不是&
它是and
答案 3 :(得分:0)
这将取决于数据的确切格式。
你说你有86400个元素,所以我猜它是每秒一个元素。如果是这样的话,那就像:
start = 7 * 3600 # 7 hours
end = 14 * 3600 # and 14 hours
x_slice = x_data[start:end]
y_slice = y_data[start:end]
但是,这要求x_data按递增时间排序。
如果不是这种情况,则必须并行地对两个数组进行一些循环(jonrsharpe提到的基于zip
的方法看起来像一个可能的起点)。