如何将可变数量的参数带入函数并将它们用作索引?

How can I take a variable number of arguments into a function and use them as indices?

这是一个没有函数的例子:

my_string = "tremendeous"
my_tuples = (my_string[3], my_string[7])

现在如果我想概括它,我不知道如何处理使元组的大小可变?

如果用户想要 1 个索引、3 个索引或 5 个索引怎么办?

def doIt(my_string, *indices):
   
   my_tuples = (my_string[indices_1], my_string[indices_2] .... my_string[indices_n])

   return my_tuples

有人可以调用:doIt("tremendeous", 3) 或 doIt("tremendeous", 3, 5) 或 doIt("tremendeous", 0, 3, 4, 4)

我知道我可以使用“*”来接受多个参数,但是我怎样才能将可变数量的参数提供给 my_tuples?

您可以使用 operator.itemgetter 创建一个函数,该函数从具有给定索引的可迭代对象(您的字符串)中获取项目,通过将传递的参数解压缩为位置参数来将索引传递给函数

from operator import itemgetter

def foo(my_string, *indices):
    return itemgetter(*indices)(my_string)

my_string = "tremendeous"
foo(my_string, 3, 7)  # ('m', 'e')

我相信这就是您要找的:

In [10]: def doit(s, *indices):
    ...:     return tuple(s[i] for i in indices)

In [11]: doit("tremendous", 1, 3, 5, 7)
Out[11]: ('r', 'm', 'n', 'o')

看到这个SO question about "tuple comprehensions"