第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何從列表中提取嵌套在特定元素之間的元素,并將它們添加到新列表中?

如何從列表中提取嵌套在特定元素之間的元素,并將它們添加到新列表中?

慕桂英3389331 2023-12-09 15:59:14
我有一個時段列 (str),其中一天中的每個小時都有 1 或 0,具體取決于我們是否選擇在該小時內(nèi)運行廣告活動。例子:daypart = '110011100111111100011110'我想將其轉(zhuǎn)換為以下字符串格式:'0-1, 4-6, 9-15, 19-22'上述格式更具可讀性,并顯示了活動運行的時間。這就是我正在做的:hours_list = []ind = 0for x in daypart:    if int(x) == 1:        hours_list.append(ind)    else:        hours_list.append('exclude')    ind += 1上面給了我一個這樣的列表:[0, 1, 'exclude', 'exclude', 4, 5, 6, 'exclude', 'exclude', 9, 10, 11, 12, 13, 14, 15, 'exclude', 'exclude', 'exclude', 19, 20, 21, 22, 'exclude']現(xiàn)在我想找到一種方法將上述內(nèi)容變成我想要的輸出。我想做的是找到“排除”之間存在哪些元素,然后開始將它們添加到新列表中。然后,我可以從每個列表中取出最小和最大的元素,用“-”將它們連接起來,然后將所有此類列表附加在一起。我有什么想法可以做到這一點,或者有更簡單的方法來完成這一切嗎?
查看完整描述

3 回答

?
qq_笑_17

TA貢獻1818條經(jīng)驗 獲得超7個贊

這是獲取所有間隔的簡單易讀的代碼:


daypart = '1111111111111111111111'

hours= []

start, end = -1, -1

for i in range(len(daypart)):

    if daypart[i] == "1":

        if end != -1:

            end += 1 

        else:

            start = i 

            end = i 

    else:

        if end!=-1:

            hours.append([start, end])

            start, end = -1,-1

if end!=-1:

    hours.append([start, end])

    start, end = -1,-1


print(hours)


查看完整回答
反對 回復 2023-12-09
?
婷婷同學_

TA貢獻1844條經(jīng)驗 獲得超8個贊

我建議您直接轉(zhuǎn)換為所需的格式,而不是使用與原始輸入具有完全相同信息的中間表示形式。讓我們想想如何用語言來做到這一點:

  1. 查找1輸入字符串中的第一個

  2. 將索引添加到列表中

  3. 查找0字符串中的下一個。

  4. 將比找到的索引少的一個添加到列表中。(或者可以將步驟 2 和 4 中的索引作為一對附加?)

  5. 繼續(xù)查找下一個1并重復步驟 2-4。

我將其翻譯成代碼作為讀者的練習。


查看完整回答
反對 回復 2023-12-09
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

這也可以在理解中使用itertools.groupby, operator.itemgetter,來實現(xiàn):enumerate


from itertools import groupby

from operator import itemgetter

daypart = '110011100111111100011110'

get_ends, get_one = itemgetter(0,-1), itemgetter(1)


output = ', '.join('{0[0]}-{1[0]}'.format(*get_ends(list(g))) for k,g in groupby(enumerate(daypart), get_one) if k=='1')

print(output)

0-1, 4-6, 9-15, 19-22

get_ends獲取每個組中的第一個和最后一個元素,并get_one僅獲取元素1,以便將其用作鍵。


查看完整回答
反對 回復 2023-12-09
  • 3 回答
  • 0 關(guān)注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號