首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组分组到元组数组中-奇数长度

将数组分组到元组数组中-奇数长度
EN

Stack Overflow用户
提问于 2013-02-05 01:42:14
回答 3查看 204关注 0票数 1

假设我有一个像/resource/123/resourceb/b/someotherresource/这样的路径。在这种情况下,someotherresource没有资源id。这个例子有3个资源,但我需要处理1-4个资源之间的任何地方。

将其分割为[(a,b), (c,d), (e, None)]的pythonic方法是什么?

示例:

代码语言:javascript
复制
x =  '/resource/123/resourceb/b/someotherresource/'
xplit = x.split('/')
>>> [ 'resource', '123', 'resourceb', 'b', 'someotherresource']
import magic
# ideal result
>>> [ ('resource', '123'), ('resourceb', 'b'), ('someotherresource', None)]

我知道我可以用愚蠢的方法来做,但是有没有一种简单的方法来拆分和配对一个奇数长度的数组呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-05 01:51:07

代码语言:javascript
复制
In [24]: x
Out[24]: '/resource/123/resourceb/b/someotherresource/'

In [25]: s = x.strip('/').split('/')

In [26]: zip(s[::2], s[1::2] + [None])
Out[26]: [('resource', '123'), ('resourceb', 'b'), ('someotherresource', None)]
票数 2
EN

Stack Overflow用户

发布于 2013-02-05 01:44:34

使用itertools.izip_longest()iter魔术:

代码语言:javascript
复制
import itertools
list(itertools.izip_longest(*[iter(xplit[1:])]*2))

我们从索引1开始,因为前导的/斜杠在开头给出了一个空元素。

或者,去掉开头和结尾的斜杠:

代码语言:javascript
复制
list(itertools.izip_longest(*[iter(x.strip('/').split('/'))]*2))

输出:

代码语言:javascript
复制
>>> list(itertools.izip_longest(*[iter(x.strip('/').split('/'))]*2))
[('resource', '123'), ('resourceb', 'b'), ('someotherresource', None)]

包装成一个神奇的方法:

代码语言:javascript
复制
import itertools

def split_to_pairs(path):
    path = path.strip('/').split('/')
    return list(itertools.izip_longest(*[iter(path)]*2))
票数 2
EN

Stack Overflow用户

发布于 2013-02-05 01:46:05

查看grouper() recipie from itertools

代码语言:javascript
复制
def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

(在2.x中,zip_longest()izip_longest())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14692322

复制
相关文章

相似问题

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