Python 是否可以引用未知数量的变量?

Python 是否可以引用未知数量的变量?,python,Python,我只是在玩一些代码,但它似乎有特定数量的变量硬编码。我想知道如何使用未知数量的变量 下面是一个需要澄清的违规代码示例(它本身不起作用,只是从更大的代码库中取出,以显示我的意思): 正如您所看到的,它有3个变量,这些变量在代码中被引用和解释,但是如果它是一个更大的变量列表呢。例如,它不是[1,2,3],而是[1,2,3,4,5,6..] 我知道我可以找出新列表(len(list))中有多少个变量,但是如果我知道列表中有N个变量,我该怎么办?有没有办法在for循环(以及程序的其余部分)中使用未知数量

我只是在玩一些代码,但它似乎有特定数量的变量硬编码。我想知道如何使用未知数量的变量

下面是一个需要澄清的违规代码示例(它本身不起作用,只是从更大的代码库中取出,以显示我的意思):

正如您所看到的,它有3个变量,这些变量在代码中被引用和解释,但是如果它是一个更大的变量列表呢。例如,它不是
[1,2,3]
,而是
[1,2,3,4,5,6..]

我知道我可以找出新列表(len(list))中有多少个变量,但是如果我知道列表中有N个变量,我该怎么办?有没有办法在for循环(以及程序的其余部分)中使用未知数量的变量?

虽然可以通过*args使用任意数量的参数,但为什么不简单地使用列表呢?我认为这更自然。类似于:

def test(vs, target_sum, current_total):
    counter = 0
    vranges = [range(0, target_sum+1, v) for v in vs]
    for ivec in itertools.product(*vranges):
        if sum(ivec) == current_total:
            counter += 1
    return counter
[顺便说一句,请注意,这只是一个示例。如果您确实想要给定的特定函数的结果,有更快的计算方法。]

虽然您可以通过*args使用任意数量的参数,但为什么不简单地使用列表呢?我认为这更自然。类似于:

def test(vs, target_sum, current_total):
    counter = 0
    vranges = [range(0, target_sum+1, v) for v in vs]
    for ivec in itertools.product(*vranges):
        if sum(ivec) == current_total:
            counter += 1
    return counter

[顺便说一句,请注意,这只是一个示例。如果您真的需要给定的特定函数的结果,有更快的计算方法。]

正是因为我已经编写了它,这里有一个使用
*args
的解决方案:

>>> target_sum = 10
>>> counter = 0
>>> def test(current_total, *args):
...   global counter, target_sum
...   for t in itertools.product(*(range(0, target_sum + 1, x) for x in args)):
...     if sum(t) == current_total:
...       counter = counter + 1
... 
>>> test(10, 1, 2, 3)
>>> counter
14
>>> counter = 0
>>> test(10, 1, 2, 3, 4, 5, 6)
>>> counter
35

就因为我已经编写了它,这里有一个使用
*args
的解决方案:

>>> target_sum = 10
>>> counter = 0
>>> def test(current_total, *args):
...   global counter, target_sum
...   for t in itertools.product(*(range(0, target_sum + 1, x) for x in args)):
...     if sum(t) == current_total:
...       counter = counter + 1
... 
>>> test(10, 1, 2, 3)
>>> counter
14
>>> counter = 0
>>> test(10, 1, 2, 3, 4, 5, 6)
>>> counter
35

如果支持未知数量的变量,它们将如何命名,您如何知道它们的名称?凭猜测?这没有道理。处理未知数量的值的经典方法是使用数组、列表或其他容器。。。?你打算如何实施这样的计划。我保证还有另外一种方法。如果支持未知数量的变量,它们将如何命名,您如何知道它们的名称?凭猜测?这没有道理。处理未知数量的值的经典方法是使用数组、列表或其他容器。。。?你打算如何实施这样的计划。我保证还有别的办法。非常感谢。我拿了那个代码,并把它变成了一个列表,意识到我不知道该怎么办,所以我问。今天早上我在*列表和**目录上看到了一段youtube视频,但我没有链接。我打算玩一下,但谢谢你,这正是我想要的。Re:函数..我正在研究一个更好的可伸缩性、更快的解决方案,现在只是修补其他代码,以便更好地了解正在发生的事情(当我遇到问题时,我会给你们定义bug!)。再次感谢你给我看*vranges@Lostsoul当前位置上的文档可能会有所帮助。谢谢,我会查看它(并重新阅读我的一些python书籍)非常感谢。我拿了那个代码,并把它变成了一个列表,意识到我不知道该怎么办,所以我问。今天早上我在*列表和**目录上看到了一段youtube视频,但我没有链接。我打算玩一下,但谢谢你,这正是我想要的。Re:函数..我正在研究一个更好的可伸缩性、更快的解决方案,现在只是修补其他代码,以便更好地了解正在发生的事情(当我遇到问题时,我会给你们定义bug!)。再次感谢你给我看*vranges@Lostsoul:上的文档可能会有帮助。谢谢,我会查看它(并重新阅读我的一些python书籍)