如何在Python中合并嵌套循环的结果

时间:2018-07-25 07:03:05

标签: python nested-loops

我需要帮助来组合两次迭代的嵌套循环输出。 这是我嵌套的while代码:

iteration=0
while (iteration < 2):
   count = 0
   bit=5
   numbers = []
   while (count < bit):
      Zero = 0
      One = 1

      IV=(random.choice([Zero, One]))
      numbers.append(IV)
      count= count + 1
   print ('List of bit:', numbers)
   iteration=iteration + 1
   print ("End of iteration",iteration)

这是结果:

List of bit: [1, 0, 1, 1, 0]
End of iteration 1
List of bit: [1, 0, 0, 1, 1]
End of iteration 2

但是,我想合并循环的结果。据推测,结果可能会产生如下所示:

Combination of bit:[1, 0, 1, 1, 0 ,1 , 0, 0, 1, 1]

希望有人可以帮助我做到这一点。 非常感谢。

5 个答案:

答案 0 :(得分:4)

此代码肯定应该重新组织,但这是解决方案。

from itertools import chain

# list for appending results
combined = []    

iteration=0
while (iteration < 2):
    count = 0
    bit=5
    numbers = []
    while (count < bit):
        Zero = 0
        One = 1

        IV=(random.choice([Zero, One]))
        numbers.append(IV)
        count= count + 1
    print ('List of bit:', numbers)
    iteration=iteration + 1
    print ("End of iteration",iteration)

    # append the result
    combined.append(numbers)

# print the combined list
print(list(chain.from_iterable(combined)))

输出

[1, 0, 1, 1, 0 ,1 , 0, 0, 1, 1]

答案 1 :(得分:2)

只需在循环外部初始化setantenv,而不是在每次迭代时都将其清除,这样您的结果就可以继续追加到ant build上。

numbers

答案 2 :(得分:1)

鉴于该代码仅创建了一个包含10个随机二进制值的列表,因此该代码似乎极其复杂。您可以通过以下方法获得相同的效果:

>>> import random
>>> [random.choice([0,1]) for _ in range(10)]
[0, 0, 0, 0, 1, 0, 1, 0, 1, 1]

但是,在代码站立时,每次迭代产生的值的列表在下一次迭代的开始处被numbers = []行抛弃了。

将其移动到初始while语句之前,或者在while语句之外创建一个单独的列表,然后将每个迭代附加到该列表中。

后一种方法(只需对代码进行最少的更改)如下所示:

iteration=0
all_numbers = [] # List to hold complete set of results

while (iteration < 2):
   count = 0
   bit=5
   numbers = []
   while (count < bit):
      Zero = 0
      One = 1

      IV=(random.choice([Zero, One]))
      numbers.append(IV)
      count= count + 1
   print ('List of bit:', numbers)
   iteration=iteration + 1
   print ("End of iteration",iteration)
   all_numbers.extend(numbers)  # Add the iteration to the complete list

print ('Complete list', all_numbers) # Show the aggregate result

答案 3 :(得分:0)

您的numbers变量正在外部循环中重新初始化。

答案 4 :(得分:0)

其他答案已经指出了错误的出处,但对于这样一个简单的事情,实际上这是太多的代码。 pythonic方式是一种更简单,更易读的单行代码:

numbers =  [random.randint(0,1) for i in range(10)]