存储python中每个循环的所有生成列表

时间:2018-03-15 15:57:41

标签: python list

我正在尝试python,基本上是新手。我想要做的是将所有生成的列表保存或存储到一个列表中,然后再访问该列表。该列表是从循环生成的。

基本上我的代码是:

def doSomething():
    list = []
    ....some parsing procedures....
    ......
    ...here needed texts are extracted...
    ...so I am looping to extract all texts I need...

    for a in something:            
        list.append(a)

首次执行后,列表现已填充... 然后程序进入下一页,它基本上是相同的结构,然后再次调用doSomething函数。 我希望现在很清楚..

假设第一,第二和第三个循环等产生了这个:

1st loop: [1,2,3]
2nd loop: [4,5,6]
3rd loop: [7,8,9]

我想将这些列表保存到一个列表中并稍后访问它,以便:

alllist = [1,2,3,4,5,6,7,8,9]

我怎样才能做到这一点?

7 个答案:

答案 0 :(得分:0)

Identation在python中很重要。您的代码没有正确的缩进。其他编程语言使用{和}来分组语句,而Python使用空格。

for a in something:
    list.append(a)
for b in something2:
    list.append(b)

但是,我建议直接使用某事+某事2

答案 1 :(得分:0)

这应该有所帮助:

lst = [1, 2, 3]
lst.extend([4, 5, 6])
lst.extend([7, 8, 9])
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 2 :(得分:0)

您可以将for循环中的前三个列表存储在变量中,然后可以为每个列表执行for循环,并将其附加到新列表以获取您正在寻找的输出。

first_list = [1,2,3]
second_list =  [4,5,6]
third_list = [7,8,9]

new_list = []

for number in first_list:
      new_list.append(number)

for number in second_list:
      new_list.append(number)

for number in third_list:
      new_list.append(number)

print(new_list)

new_list中的输出是:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 3 :(得分:0)

您可以使用extend方法:

def doSomething(something):
    list = []
    for a in something:
        list.append(a)
        # ....this loop for some definite number...
    return list

allist = []
allist.extend(doSomething(smt1))
allist.extend(doSomething(smt2))
allist.extend(doSomething(smt3))

答案 4 :(得分:0)

你真正需要的(我认为)是其他语言所谓的“静态”。有几种解决方案,包括写一堂课。我经常使用闭包

在此示例中,第一个名为initial的函数设置了四个属性localList(不调用变量list,它掩盖了list class),start和两个内部函数。返回对这些函数的引用(未调用),并且每个函数都在其上下文中保留<{1}}

需要使用localList(需要Python 3)来指示nonlocal的上下文。

这样做的好处是实际的机制是封装的,我们没有全局变量。如果您在程序中的其他地方有变量名为startlocalListstartinner,则它们不会发生冲突。

inner_get

给出:

def initial():
    localList = []
    start = 1

    def inner():
        nonlocal start

        for a in range(start, start + 3):
           localList.append(a)
        start += 3

    def inner_get():
        return localList

    return inner, inner_get

# get the function references
doSomething, getIt  = initial()

for i in range(3):
    doSomething()

# get the list
print(getIt())  
# or
alllist = getIt()

是的,它有点复杂,但它是一种有用的技术,如果你可以的话。

答案 5 :(得分:0)

我弄清楚了,我必须创建一个在循环期间存储所有列表的函数:

def funcThatStoreList(args, result =[]):
    result.append(args)

答案 6 :(得分:0)

you might pass the values to another function like:

    def newFunction(args, results =[]):
        result.append(args)
        return result

then call the function that generates list:

    doSomething()
    newFunction(doSomething())

if we print newFunction(doSomething()), we will see the appended lists from doSomething function