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

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

如何將列表與列表列表中的公共元素合并?

如何將列表與列表列表中的公共元素合并?

元芳怎么了 2021-12-16 16:42:17
我正在嘗試合并具有公共元素的列表列表中的所有列表。我有一些工作代碼。但是,它似乎打破了這個例子:def merge_subs(lst_of_lsts):    res = []    for row in lst_of_lsts:        for i, resrow in enumerate(res):            if row[0]==resrow[0]:                res[i] += row[1:]                break            else:                res.append(sorted(row))    return sorted(res)輸入是:merge_subs([[1, 7, 3], [1, 7, 5], [2, 0, 4], [2, 0, 6], [3, 7, 1], [3, 7, 5], [4, 0, 2], [4, 0, 6], [5, 7, 1], [5, 7, 3], [6, 0, 2], [6, 0, 4]])我的結(jié)果是:[[0, 2, 4, 6], [1, 3, 5, 7], [3, 5, 7]]但我應該得到:[[0, 2, 4, 6], [1, 3, 5, 7]]
查看完整描述

2 回答

?
交互式愛情

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

您需要使用遞歸:


def group(d, _start, _c = [], _seen = [], _used=[]):

  r = [i for i in d if any(c in _start for c in i) and i not in _seen and i not in _used]

  if not r:

    yield set(_c)

    for i in d:

      if i != _start and i not in _used:

         yield from group(d, i, _c=[], _seen=[], _used=_used+[i, *r])

  else:

    yield from group(d, _start, _c=_c+[i for b in r for i in b], _seen=_seen+r, _used=_used+r)


data = [[1, 7, 3], [1, 7, 5], [2, 0, 4], [2, 0, 6], [3, 7, 1], [3, 7, 5], [4, 0, 2], [4, 0, 6], [5, 7, 1], [5, 7, 3], [6, 0, 2], [6, 0, 4]]

result = list(map(list, {tuple(i) for i in group(data, data[0], _seen=[data[0]]) if i}))

輸出:


[[0, 2, 4, 6], [1, 3, 5, 7]]


查看完整回答
反對 回復 2021-12-16
?
吃雞游戲

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

這個問題可以使用遞歸解決,特別是尾遞歸:


def merge(lists, results=None):


    if results is None:

        results = []


    if not lists:

        return results


    first = lists[0]

    merged = []

    output = []


    for li in lists[1:]:

        for i in first:

            if i in li:

                merged = merged + li

                break

        else:

            output.append(li)


    merged = merged + first

    results.append(list(set(merged)))


    return merge(output, results)

結(jié)果如下所示:


>>> lists = [[1, 7, 3], [1, 7, 5], [2, 0, 4], [2, 0, 6], [3, 7, 1], [3, 7, 5], [4, 0, 2], [4, 0, 6], [5, 7, 1], [5, 7, 3], [6, 0, 2], [6, 0, 4]]

>>> merge(lists)

[[1, 3, 5, 7], [0, 2, 4, 6]]


查看完整回答
反對 回復 2021-12-16
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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