2015-01-04 65 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