如何索引* args中包含的列表?

时间:2017-11-29 00:38:10

标签: python

无法从' funCall'中的列表中获取单个值功能。知道如何索引* args?

def funCall(*args):
    ans = args[0]
    print(ans)

def roll(a_list):
    check = []
    for i in a_list:
        if a_list.count(i) > 2:
            check.append(i)
    print(check)
    if len(check) == 3:
        funCall(check)


roll([3, 2, 3, 5, 3])

2 个答案:

答案 0 :(得分:0)

您需要将check传递给funCall,如下所示:

if len(check) == 3:
    funCall(*check)

现在,在funCall中,ans将存储check

中的第一个元素

答案 1 :(得分:0)

你误解了*args是如何运作的。 Args是一个元组,包含传递给方法的所有未命名参数。

例如想象一下:

def foo(*args):
    print(args)

foo([1,2,3], True, 1) # Prints ([1,2,3], True, 1,)
foo(*[1,2,3]) # Prints (1,2,3,)

Args是一个包含传入的所有参数的元组。所以在你的情况下args[0]只是传入的第一个东西,而不是列表的第一个索引。

如果您想使用商品值填充元组,可以使用前缀*来传递它,例如foo(*[1, 2, 3,])。这将打印出(1, 2, 3,),您的索引0将是您传入的列表中的第一项。