這是一個沒有函式的例子:
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?
uj5u.com熱心網友回復:
我相信這就是您正在尋找的:
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 問題。
uj5u.com熱心網友回復:
您可以使用operator.itemgetter創建一個函式,從具有給定索引的可迭代(您的字串)中獲取專案,通過將傳遞的 args 解包到位置引數中將索引傳遞給函式
from operator import itemgetter
def foo(my_string, *indices):
return itemgetter(*indices)(my_string)
my_string = "tremendeous"
foo(my_string, 3, 7) # ('m', 'e')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442028.html
上一篇:使用pandas函式進行資料操作
下一篇:計時器在非常特殊的情況下無法觸發
