繁体   English   中英

根据元组内的值拆分元组列表

[英]Split list of tuples based on value within tuple

如果我有以下内容:

[(1,2),(2,3),(0,0),(4,0),(0,1),(3,9),(2,0),(2,4)]

我怎么能把它分成:

[(1,2),(2,3)], [(0,1),(3,9)], [(2,4),]

每当我看到索引为1的元组,例如(1,0)时,我就会分割列表。

尝试这个:

from itertools import groupby

x = [(1,2), (2,3), (0,0), (4,0), (0,1), (3,9), (2,0), (2,4)]

print [l for l in [list(group) for key, group in groupby(x, key=lambda k: k[1]==0)]
             if l[0][1] != 0]

[OUT] [[(1,2), (2,3)], [(0,1), (3,9)], [(2,4)]]

它会生成一个列表,您可以迭代以获取这些子列表。

它不是特别光滑,但你可以像这样循环它:

myList = [(1,2),(2,3),(0,0),(4,0),(0,1),(3,9),(2,0),(2,4)]
groupedList = []
subList = []
for tup in myList:
    if tup[1] == 0:
        if subList != []:
            groupedList.append(subList)
            subList = []
    else:
        subList.append(tup)
if subList != []:
    groupedList.append(subList)
print groupedList

输出:

[[(1, 2), (2, 3)], [(0, 1), (3, 9)], [(2, 4)]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM