首页 > 解决方案 > 如何创建具有单个序列元素的序列?

问题描述

对于一个函数,我有一个参数,它是一个Sequence。我想返回给定序列中具有单个元素的另一个序列(相同类型)。

def get_element_at_index_as_list(some_seq : Sequence, index: int):
    # return some_magic(some_seq[index])
    # s.t. type(some_magic(some_seq[i])) == type(some_seq)

标签: pythonpython-3.x

解决方案


我相信应该可以返回给定序列的一部分。

例如

return some_seq[index:index+1]

只要您收到的序列类型支持切片(并使用其自己类型的对象进行切片)。它至少适用于字符串、列表和元组。甚至适用于range对象。

正如 ShadowRanger 在评论中指出的那样,它不适用于collections.deque,因为它不支持切片。我认为没有一种方法适用于所有可能的序列类型(特别是因为用户可能会注册自己的序列类型)。

这是一种适用于deque(和大多数其他序列类型)但不适用于字符串的方法:

return type(some_seq)([some_seq[index]])

推荐阅读