首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >元组列表中的元组拆分列表

元组列表中的元组拆分列表
EN

Stack Overflow用户
提问于 2014-03-20 10:46:30
回答 5查看 585关注 0票数 4

我有一个元组列表,如:

代码语言:javascript
运行
复制
[(1,a),(2,b), (1, e), (3, b), (2,c), (4,d), (1, b), (0,b), (6, a), (8, e)]

我想把它分成每一个"b“的列表

代码语言:javascript
运行
复制
[[(1,a),(2,b)], [(1, e), (3, b)], [(2,c), (4,d), (1, b)], [(0,b)], [(6, a), (8, e)]]

有什么节奏曲的方法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-20 10:52:04

代码语言:javascript
运行
复制
my_list = [(1, "a"),(2, "b"), (1, "e"), (3, "b"), (2, "c"), (1, "b"), (0, "b")]
result, temp = [], []

for item in my_list:
    temp.append(item)
    if item[1] == 'b':
        result.append(temp)
        temp = []

if len(temp) > 0:
    result.append(temp)

print result
# [[(1, 'a'), (2, 'b')], [(1, 'e'), (3, 'b')], [(2, 'c'), (1, 'b')], [(0, 'b')]]
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 10:54:25

您可以使用yield

代码语言:javascript
运行
复制
def get_groups(lst):
    t = []
    for i in lst:
        t.append(i)
        if i[1] == 'b':
            yield t
            t = []
    if t:
        yield t

my_list = [(1,a),(2,b), (1, e), (3, b), (2,c), (1, b), (0,b)]
groups = list(get_groups(my_list))
票数 3
EN

Stack Overflow用户

发布于 2014-03-20 11:08:52

我的解决方案,直接在python控制台中:

代码语言:javascript
运行
复制
>>> l = [(1,'a'),(2,'b'), (1, 'e'), (3, 'b'), (2,'c'), (1, 'b'), (0,'b')]
>>> b = [-1] + [x for x, y in enumerate(l) if y[1] == 'b' or x == len(l)-1]
>>> u = zip(b,b[1:])
>>> m = [l[x[0]+1:x[1]+1] for x in u]
>>> m
[[(1, 'a'), (2, 'b')], [(1, 'e'), (3, 'b')], [(2, 'c'), (1, 'b')], [(0, 'b')]]

b是以'b‘开头的元组的索引,从-1开始。

代码语言:javascript
运行
复制
[-1, 1, 3, 5, 6]

u是我们将要创建的子列表的索引的元组:

代码语言:javascript
运行
复制
[(-1, 1), (1, 3), (3, 5), (5, 6)]

对于没有以‘b’结尾的元组的情况:

代码语言:javascript
运行
复制
[(1, 'a'), (2, 'b'), (1, 'e'), (3, 'b'), (2, 'c'), (1, 'b'), (0, 'b'), (6, 'a'), (8, 'e')]

给予:

代码语言:javascript
运行
复制
[[(1, 'a'), (2, 'b')], [(1, 'e'), (3, 'b')], [(2, 'c'), (1, 'b')], [(0, 'b')], [(6, 'a'), (8, 'e')]]    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22530507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档