我怎样才能得到一个有 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 条件之后。
您代码中的错误是计数的增加。它所做的是一个循环,它计算列表中的所有尾巴并将其添加到计数器中,然后,就像滚雪球效应一样,相同的尾巴被计算并在每个后续循环中再次添加。
这个修正有点低效,因为你总是会清除计数的值,然后从头开始重新计数。如果您的列表达到较大的索引值,它可能会降低您的代码速度。
祝你好运!
所以我需要创建一个有 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 条件之后。 您代码中的错误是计数的增加。它所做的是一个循环,它计算列表中的所有尾巴并将其添加到计数器中,然后,就像滚雪球效应一样,相同的尾巴被计算并在每个后续循环中再次添加。
这个修正有点低效,因为你总是会清除计数的值,然后从头开始重新计数。如果您的列表达到较大的索引值,它可能会降低您的代码速度。
祝你好运!