将元组一分为二的最有效方法是什么?

文托夫特

在 Python 3 中,我有一个元组:

a = ('aa', 'bb', 'cc', '|', 'dd', 'ee', 'ff')

我想将元组分成两个元组。元组必须在|. 的索引|不是静态的。预期结果:

a = ('aa', 'bb', 'cc',)
b = ('dd', 'ee', 'ff',)

使用分隔符将元组一分为二的最有效方法是什么?

我知道元组是不可变的,但情况需要我有点务实。

编辑:就我而言,将有 0 或 1 个分隔符 ( |)。元组中的数据长度将超过 1。

tobias_k

正如评论中所建议的,您可以使用itertools.groupby将元组细分为“非分隔符”和“分隔符”组,然后选择那些不是分隔符的组。这适用于任意数量的段,但如果您知道恰好有两个组,也可以将其解包为两个变量。

>>> a = ('a', 'b', 'c', '|', 'd', 'e', 'f', '|', 'g', 'h', 'i')
>>> [tuple(g) for k, g in itertools.groupby(a, key='|'.__eq__) if not k]
[('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]

这也可以推广到允许不同的分隔符,例如使用groupby(a, key='|-'.__contains__).


关于评论:它的时间复杂度应该是 O(n),就像使用 时一样index,如果您不知道在哪里拆分并且元组没有以任何方式排序,这也是您可以期望的最佳时间。但是请注意,这会groupby带来一些开销,这使得该解决方案比使用 元组切片4-5 倍不过,它仍然更通用,更容易适用于未知数量的组。 index

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在字符串中将字符一分为二的最优雅的Ruby语句是什么?

来自分类Dev

如何将列表元素一分为二?

来自分类Dev

Python 2.7.6将单个“高” unicode代码点一分为二

来自分类Dev

从初始提交一分为二

来自分类Dev

如何以有效的内存方式在python中将矩阵一分为二?

来自分类Dev

将php数组一分为二

来自分类Dev

如何使用Git将分支一分为二?

来自分类Dev

如何以pythonic方式将元组一分为二

来自分类Dev

如何将一个迭代器一分为二?

来自分类Dev

如何基于行开始将拆分文件一分为二?

来自分类Dev

在已经提交更改之后,如何将提交一分为二

来自分类Dev

Android MVVM设计-我应该将viewmodel类一分为二吗?

来自分类Dev

如何基于行开始将拆分文件一分为二?

来自分类Dev

将字符串中的字符一分为二的最优雅的Ruby语句是什么?

来自分类Dev

如何将一张桌子一分为二

来自分类Dev

Python 2.7.6将单个“高” unicode代码点一分为二

来自分类Dev

如何将句子一分为二?

来自分类Dev

在模式之前将文件一分为二

来自分类Dev

如何将变量一分为二?

来自分类Dev

将PDF页面一分为二

来自分类Dev

如何使用LVM将crypt_LUKS分区一分为二?

来自分类Dev

如何将.mp4一分为二?

来自分类Dev

将一行一分为二

来自分类Dev

Windows 10:如何将屏幕一分为二?

来自分类Dev

使用jQuery或CSS将表格一分为二

来自分类Dev

将 CSV 列一分为二

来自分类Dev

将显示器一分为二

来自分类Dev

将google-vision框架一分为二

来自分类Dev

jq 将单个字符串值一分为二