2015-01-04 72 views
-1

我有两个一维列表xy(未知的巨大长度)取自一个数据表。在Python中切割一维列表为两部分

我想取值x < 5和相应的y值到列表的一个set,说{x1, y1}

另外我想x > 6的值和相应的y值到列表的另一个set,说{x2, y2}。

我该怎么办?

+0

你可以说一下你试过的东西吗? – Joel 2015-01-04 11:53:21

+0

例如,数组x具有从0到10的1000个值,并且数组y具有对应的值。现在我想要一个数组x1(来自x),其值为0至5,另一个x2的值为6至10,y1和y2中的对应值也是如此。 – user43280 2015-01-04 11:57:49

+0

'数组'在Python中不存在。它们被称为'list's(编辑) – Jivan 2015-01-04 12:08:39

回答

0

这里有一个选项

z = zip(x,y) #z = [(x[0],y[0]), ...] 

smaller = [(xval,yval) for (xval,yval) in z if xval<= 5] #those with x<=5 
larger = [(xval,yval) for (xval,yval) in z if xval>=6] #those with x>=6 

x1,y1 = map(list,zip(*smaller)) #break them apart and make the results lists, not tuples. 

x2,y2 = map(list,zip(*larger)) 

这是一种很酷如何zip(*list)撤销list = zip(.,.)。请注意,如果x=5.5是一个选项,则此代码中存在一个错误。最好把它看作xval> 5的大型案件,但我没有这样做,因为从你的问题不清楚5.5的标准应该是什么。

+0

什么是a和b ?它显示:名称'a'没有定义 – user43280 2015-01-04 12:06:10

+0

固定---它们应该是x和y。我还将列表解析中的x和y更改为xval和yval,以避免与x,y混淆。 – Joel 2015-01-04 12:07:36

+0

谢谢!!它的工作.. – user43280 2015-01-04 12:10:10