从结果列到具有相同结果的行

时间:2015-10-09 10:58:26

标签: python row sequence flip

我真的是python的初学者,而且我正在分析投掷硬币的任务。投掷数量为1000,结果可能为12。我要求创建包含相同结果序列的行(例如1 1 1 1 1 1 1 1然后2 2 2 2 2,..)并给出最长出现序列的长度。

from numpy.random import randint, seed
seed(0)

for n in range(1000):
   r = randint(1,3)
   print(r)

给了我一个报告结果如下的专栏

1
2
1
1
2
1
1

我无法找到合适的代码来创建相同结果的那些行序列。

2 个答案:

答案 0 :(得分:0)

您正在打印for循环的每次迭代的结果。

一个简单的解决方案是创建2个列表,每个列表包含每次出现的1或2:

list1 = []
list2 = []

在for循环中,您可以使用list.append方法将r的值添加到相应的列表中:

for n in range(1000):
    r = randint(1, 3)
    if r == 1:
        list1.append(r)
    else:
        list2.append(r)

这样,list1包含数字1的每次出现,而list2包含所有数字2。

您现在可以打印两个列表,并使用len()来获取每个列表中的元素数量。

答案 1 :(得分:0)

试试这个:

count1 = 0
count2 = 0
for n in range(1000):
    r = randint(1, 3)
    if r == 1:
        count1 += 1
    elif r == 2:
        count2 += 1

if count1 > count2:
    print('1'*count1)
    print('2'*count2)
    print('Longest sequence is of 1\'s, with %s occurences'  %count1)
else:
    print('1'*count1)
    print('2'*count2)
    print('Longest sequence is of 2\'s, with %s occurences' %count2)