首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python 3中连接序列的首选方法是什么?

在Python 3中连接序列的首选方法是什么?
EN

Stack Overflow用户
提问于 2013-01-16 00:29:40
回答 1查看 6.2K关注 0票数 12

在Python 3中连接序列的首选方法是什么?

现在,我正在做:

import functools
import operator

def concatenate(sequences):
    return functools.reduce(operator.add, sequences)

print(concatenate([['spam', 'eggs'], ['ham']]))
# ['spam', 'eggs', 'ham']

要做到这一点,需要导入两个独立的模块看起来很笨拙。

另一种选择可能是:

def concatenate(sequences):
    concatenated_sequence = []
    for sequence in sequences:
        concatenated_sequence += sequence
    return concatenated_sequence

但是,这是不正确的,因为您不知道序列是列表。

你可以这样做:

import copy

def concatenate(sequences):
    head, *tail = sequences
    concatenated_sequence = copy.copy(head)
    for sequence in sequences:
        concatenated_sequence += sequence
    return concatenated_sequence

但这似乎很容易出现bug --直接调用copy?(我知道head.copy()适用于列表和元组,但copy不是序列ABC的一部分,所以您不能依赖它……如果你得到的是字符串怎么办?)。你必须复制以防止发生突变,以防你收到一个MutableSequence。此外,此解决方案强制您首先解包整个序列集。重试:

import copy 

def concatenate(sequences):
    iterable = iter(sequences)
    head = next(iterable)
    concatenated_sequence = copy.copy(head)
    for sequence in iterable:
        concatenated_sequence += sequence
    return concatenated_sequence

但是来吧..。这是python!所以..。执行此操作的首选方法是什么?

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

https://stackoverflow.com/questions/14342242

复制
相关文章

相似问题

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