我需要帮助来组合两次迭代的嵌套循环输出。 这是我嵌套的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]
希望有人可以帮助我做到这一点。 非常感谢。
答案 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)]