這一直給我一些麻煩一段時間,也許我有隧道視覺。給定一個整數列表,生成一個新的列表,其中每組相鄰的副本已經變成一個元組。使用列表理解,元組和itertools.groupby
例如,給出的列表:[1, 2, 3, 3, 4, 5, 5, 5, 6]
生成的列表包含:[1, 2, (3, 3), 4, (5, 5, 5), 6]
我想實現這個用list理解。
numbers = [1, 2, 3, 3, 4, 5, 5, 5, 6]
it = itertools.groupby(numbers)
numbers = [tuple(group) if len(tuple(group)) > 1 else key for key, group in it]
結果我很期待:
[1, 2, (3, 3), 4, (5, 5, 5), 6]
結果我得到:
[1, 2,(), 4,(), 6]
插入的元組是空的,顯然 - 但在同時他們不是,因爲他們必須有不止一個元素才能插入到第一個位置。這是怎麼回事?我是python的新手,甚至在耗盡了所有能夠想到的關鍵字之後,我仍然無法在線找到類似的問題。我確定這很簡單,我只是看不到它。任何幫助表示讚賞。
謝謝塔瑪斯!我已經接受你的答案,因爲你提供了一個解釋,解決了我的問題。 –