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

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

將列表中特定項目的連續重復項打包到列表列表中

將列表中特定項目的連續重復項打包到列表列表中

aluckdog 2023-02-22 17:12:51
我想讀取一個列表,然后從該列表中選擇連續的特定項目以將它們存儲在 New_list 中。繼續閱讀列表,然后再次從該列表中選擇該特定項目并將它們作為另一個列表存儲在該 New_list 中。讓我們舉個例子:nw_lst = []    lst = [1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1]    for i in range(0, len(lst), 1):        if lst[i] == 0:        nw_lst.append(lst[i])print nw_lst我得到的輸出是:[0, 0, 0, 0, 0, 0, 0]我想得到:[[0, 0, 0], [0, 0], [0, 0]]
查看完整描述

3 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

您可以使用itertools.groupby


import itertools as it


result = [list(g) for k, g in it.groupby(lst) if k == 0]


查看完整回答
反對 回復 2023-02-22
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

只要您只對連續的零感興趣,這里就有一個解決方案。這個想法是利用split字符串的方法。您只需將列表轉換為字符串,將其拆分為 1,然后返回列表。


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

lst_str = "".join([str(x) for x in lst])

lst_str_zeros = lst_str.split("1")

new_lst = [[int(y) for y in x] for x in lst_zeros if x!=""]


print(new_lst)

[[0, 0, 0], [0, 0], [0, 0]]


查看完整回答
反對 回復 2023-02-22
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

使用變量檢查每次迭代中flag的狀態。list


nw_lst = []

tmp = []

flag = 0 

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

for i in lst:

    if i == 0:

        if flag == 0:

            tmp.append(i)

            flag = 1

        else:

            tmp.append(i)

    else :

        flag = 0

    if flag == 0 and len(tmp):

        nw_lst.append(tmp)

        tmp = []


查看完整回答
反對 回復 2023-02-22
  • 3 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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