我正在尝试在python中编写一个函数,该函数将使用两个不同的元素来获取可变数量的元素,这两个元素将分隔两个元组中的参数。例如,我想打个电话:
foo('D1', d1n1, d1n2, ... , 'D2', d2n1, d2n2, ...)
其中d1n1等类型相同,我想在元组中得到'D1'和'D2'之间的元素,而在另一个元素中得到'D2'之后的元素。但我对如何做到这一点有点失落。任何帮助将不胜感激:)。
答案 0 :(得分:4)
可以通过使用*args
接受无限数量的参数,然后将args除以第二个不同元素的索引来实现。
例如:
def foo(*args):
ind = args.index('D2')
lst1 = args[:ind]
lst2 = args[ind:]
print lst1
print lst2
foo('D1', 1, 2, 3, 4, 5, 'D2', 6, 7, 8, 9)
<强>输出强>
('D1', 1, 2, 3, 4, 5)
('D2', 6, 7, 8, 9)
实现它的另一种方法是,当她调用函数时(使用命名参数),要求用户分别分离参数:
def foo(lst1, lst2):
print lst1
print lst2
foo(lst1=['D1', 1, 2, 3, 4, 5], lst2=['D2', 6, 7, 8, 9])