为什么我的变量只返回函数之外的一个值?

时间:2017-08-21 10:09:46

标签: python python-3.x global-variables

如果这很明显,请道歉,但我的功能会创建一个列表。打印列表的变量,在函数内部返回所有列表。但是在函数外打印全局变量只返回第一个值?以下是代码的两个不同版本:

在公式内打印:

from itertools import chain, combinations

noise_1 = "somerandomvalue"

min_var_length = 8
max_var_length = 16

#creates a powerset of the input value, taking into account min and max lengths
def powerset(iterable):
    global powerset_list
    s = list(iterable)
    x = list(chain.from_iterable(combinations(s, r) for r in range(len(s)+1)))
    x_string = list(x)
    for items in x_string:
        if len(items) > min_var_length:
                powerset_list = items
                print(powerset_list)


powerset(noise_1)

并返回noise_1的powerset

但是,即使我打印相同的全局变量,此代码也只返回一个值:

from itertools import chain, combinations

noise_1 = "somerandomvalue"

min_var_length = 8
max_var_length = 16

#creates a powerset of the input value, taking into account min and max lengths
def powerset(iterable):
    global powerset_list
    s = list(iterable)
    x = list(chain.from_iterable(combinations(s, r) for r in range(len(s)+1)))
    x_string = list(x)
    for items in x_string:
        if len(items) > min_var_length:
                powerset_list = items



powerset(noise_1)
print(powerset_list)

我猜测它会在一个值之后终止该功能,但我不知道如何改变这种行为。谢谢您的帮助!对不起我是菜鸟。

1 个答案:

答案 0 :(得分:0)

因此,要确认,在for循环后附加到列表会创建所有项目的列表。函数中的print命令只在它们出现时打印for循环,但只有一个项目保存在变量中。