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

文托夫特

在 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

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

来自分类Dev

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

来自分类Dev

将php数组一分为二

来自分类Dev

将PDF页面一分为二

来自分类Dev

将 CSV 列一分为二

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从初始提交一分为二

来自分类Dev

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

来自分类Dev

如何将一张桌子一分为二

来自分类Dev

将一行一分为二

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何将句子一分为二?

来自分类Dev

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

来自分类Dev

如何将变量一分为二?

来自分类Dev

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

来自分类Dev

如何将.mp4一分为二?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

将显示器一分为二

来自分类Dev

将google-vision框架一分为二

来自分类Dev

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