我有一個熊貓系列(可能是一個列表,這不是很重要)的列表,其中包含(簡化,但也可以是字母)正和負號, 如根據python中的條件從一個列表生成多個列表
0 [12,-13,0,6]
1 [2,-3,8,233]
2 [0,6,8,3]
對於每個這些例如,我想填寫一列的三列中的數據幀,其中所有正的值的列表,所有負的值的列表,以及列表所有值都包含在某個區間中。如:
[[12,6],[-13],[0,6]]
[[2,8,233],[-3],[2,8]]
[[6,8,3],[],[6,8,3]]
我首先想到的是用一個列表解析生成列表的三元名單,這將使用pd.DataFrame向右形式轉換的列表。 這是因爲我不想遍歷列表的列表3次,每次應用新的選擇啓發式時,感覺緩慢和沉悶。
但問題是我實際上無法很好地生成黑社會名單[[positive],[negative],[interval]]。 我使用的語法等
[[[positivelist.extend(number)],[negativelist], [intervalist.extend(number)]]\
在listoflists用於listofnumbers數listofnumbers \
如果數量> 0,否則,[positivelist],[negativelist.extend(數)],[intervalist.extend(號碼) ]]
但讓老實說,這是不可讀的,無論如何,它不做我想要的,因爲擴展沒有收益。
那麼我怎麼能沒有循環三次(我可以在列表列表中有數百萬個元素,並且在子列表中,並且我可能希望對這些數字應用更復雜的公式,這是第一次做法)?
我想過使用函數式編程,map/lambda;但它是和諧的。問題是:python中的內容可能有助於做到這一點?
我的猜測是一些爲:
newlistoflist=[]
for list in lists:
positive=[]
negative=[]
interval=[]
for element in list:
positive.extend(element) if element>0
negative.extend(element) if element<0
interval.extend(element) if n<element<m
triad=[positive, negative,interval]
newlistoflist.append(triad)
你覺得呢?
臨屋這是一個開始,但它不會做我想要的。對於每個列表,我想要一個三元組: [[12,6],[ - 13],[0,6]] [[2,8,233],[ - 3],[2, 8]] [[6,8,3],[],[6,8,3]] –
你可以給'n,m'間隔嗎? – Nuageux
@AndoJurai:如果你改變'n,m'值就應該是它。 – Nuageux