亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過在每次出現給定值之前將列表打斷,從列表中創建多個列表

通過在每次出現給定值之前將列表打斷,從列表中創建多個列表

江戶川亂折騰 2023-05-09 09:42:31
我正在嘗試從下面的列表中創建多個列表:lst=[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,        0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,        0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,        0., 0., 1., 0., 0., 1., 0., 0., 0., 0.]條件:在列表中的“1”之前中斷并創建一個新列表。如下圖所示:lst1= [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]lst2= [1., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0.]lst3= [1., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., ]lst4=[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0.]
查看完整描述

4 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

列出補償解決方案:


>>> [(a := [x]) for x in lst if x or a.append(x)]

[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0]]

Pre-Python-3.8 版本:


>>> [a for x in lst if x or a.append(x) for a in [[x]]]

[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

 [1.0, 0.0, 0.0],

 [1.0, 0.0, 0.0, 0.0, 0.0]]

(這也更簡潔一些,因為a只存在于 list comp 期間,而不是之后。)


查看完整回答
反對 回復 2023-05-09
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

您可以使用 np.array 和 np.where


lst=[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,

0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,

0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,

0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,

0., 0., 1., 0., 0., 1., 0., 0., 0., 0.]


import numpy as np

Aux = np.array(lst + [1.])

Ones = np.where(Aux==1.)[0]


result = [ list(Aux[Ones[i]:Ones[i+1]]) for i in range(len(Ones)-1)]

print(result)


Out >>> [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 

        [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

        [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

        [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 

        [1.0, 0.0, 0.0], 

        [1.0, 0.0, 0.0, 0.0, 0.0]]


查看完整回答
反對 回復 2023-05-09
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

list_number = []

lst=[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0., 0., 0., 0.]

for x in lst:

    if x==1:

        list_number.append([1])

    else:

        list_number[-1].append(x)


lst1, lst2, lst3, lst4, lst5, lst6 = list_number

簡單的解決方案


查看完整回答
反對 回復 2023-05-09
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

import numpy as np

lst=[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,

        0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,

        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,

        0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,

        0., 0., 1., 0., 0., 1., 0., 0., 0., 0.]

new_lst=[]

for i in lst:

     if i == 1:

          new_lst.append([])

     new_lst[-1].append(i)

     

#########print 

for i in new_lst:

     print(i)

輸出


[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

[1.0, 0.0, 0.0]

[1.0, 0.0, 0.0, 0.0, 0.0]


查看完整回答
反對 回復 2023-05-09
  • 4 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號