为已定义python函数的*args中的数组列表编制索引

为已定义python函数的*args中的数组列表编制索引,python,python-3.x,function,tuples,args,Python,Python 3.x,Function,Tuples,Args,我有一个2-D数组的可变长度列表,可以选择将其传递给python函数。这是我第一次尝试的缩小版 list_of_2Darrays = [array_a,array_b,array_c] def viol(required,*args): dist_a = args[0] dist_b = args[1] dist_c = args[2] sum = dist_a + dist_b + dist_c output = viol(required,list_of_

我有一个2-D数组的可变长度列表,可以选择将其传递给python函数。这是我第一次尝试的缩小版

list_of_2Darrays = [array_a,array_b,array_c]

def viol(required,*args):
    dist_a = args[0]
    dist_b = args[1]
    dist_c = args[2]
    sum = dist_a + dist_b + dist_c

output = viol(required,list_of_2Darrays)
它似乎适用于“dist_a”,但当它到达“1”位置时,它产生了:“indexer-ror:tuple-index-out-range”。从那里,我读到了这个问题,它解释了*args是作为一个元组读取的,我不能通过元组进行索引

我尝试将元组转换为具有列表(args)的列表,但随后收到“IndexError:列表索引超出范围。接下来,我尝试实现上述问题中的方法,但它给了我一个“AttributeError:‘NoneType’对象不可订阅”。“我尝试使用我在另一个网站上发现的一种方法,即使用排序函数,使其可订阅

list_of_2Darrays = [array_a,array_b,array_c]

def foo(*args):
    print(args)

def viol(required,*args):
    temp = foo(args)
    dists = temp.sort()
    dist_a = dists[0]
    dist_b = dists[1]
    dist_c = dists[2]
    sum = dist_a + dist_b + dist_c

output = viol(required,list_of_2Darrays)
这产生了以下错误,“AttributeError:'非类型'对象没有属性'排序'”

我肯定我遗漏了一些简单的东西,或者只是没有以一种有效的方式编码。如果你能提供任何建议,我将不胜感激


编辑:有时数组列表是3个元素,有时是5个元素。“required”参数本质上告诉它将要接收的列表的长度,然后有一系列if/elif/else语句指向不同类型的计算。

您能举例说明在每种情况下如何调用(调用)函数吗?如果没有这些信息,您很难知道这里发生了什么,您需要提供一个完整的代码、输入和预期输出。顺便说一句,欢迎来到SO!如果你想要更多的提示,请查看,我不能通过元组建立索引,当然你可以。如果您遇到错误,那是因为您试图索引超过元组的结尾。
foo()
希望参数分散,因此应该是
temp=foo(*args)
。并且
foo()
不返回任何内容,那么您希望
temp
设置为什么?您是否知道必须解包参数
list\u of_2darray
,才能将其元素打包到
args
?您是否知道
*args
表示可变参数,即从0到任意多个?索引
*args
通常没有意义,因为
*args
显式表示未知数量的参数。