我怎样才能得到一个有 m 条尾巴的列表? Python

How can I get a list with m tails? Python

所以我需要创建一个有 m 个尾巴的列表。列表的元素将在尾部和头部之间随机选择。 我喜欢 :

Def S(m):
    list=[]
    counter=0
    signs=["head","tail"]
    while counter<(m):
        list.append(random.choice(signs))
        for k in list:
            if k=="tail":
               counter+=1
    print(list)

所以这个给了我一个列表,但没有 m 条尾巴。我认为 while 在这里是错误的,但我不确定如何编写代码。你能帮我改一下吗?

这会起作用:

from random import choice

def S(m):
    lst = []
    counter = 0
    signs = ["head", "tail"]
    while counter < m:
        toss = choice(signs)
        lst.append(toss)
        if toss == 'tail':
            counter += 1
    return lst

lst = S(10)
print(lst)                # ['head', 'tail', 'head', 'head', 'tail', ...]
print(lst.count('tail'))  # 10

如果您想让自己的代码正常工作,只需添加:

counter = 0

while 条件之后。 您代码中的错误是计数的增加。它所做的是一个循环,它计算列表中的所有尾巴并将其添加到计数器中,然后,就像滚雪球效应一样,相同的尾巴被计算并在每个后续循环中再次添加。

这个修正有点低效,因为你总是会清除计数的值,然后从头开始重新计数。如果您的列表达到较大的索引值,它可能会降低您的代码速度。

祝你好运!