【问题标题】:Creating lists from list从列表创建列表
【发布时间】:2021-12-08 07:56:41
【问题描述】:

目前我正在从事一个个人项目...我想根据要加入的人数随机分组。我正在创建一个将用户添加到其中的列表。并计算加入的用户数量。在我需要将用户添加到新列表之后。有没有办法在功能组中做到这一点?还是换个角度看?

def participents():
    users = []
    counter = 0
    while True:
        participent = input('Who is gonna join? ')
        if participent != 'stop':
            users.append(participent)
        elif participent == 'stop':
            break
    for user in users:
        counter +=1

    def groups():
        if counter % 3 == 0:
            ListsNeeded = counter / 3
            IntListsNeeded = int(ListsNeeded)
            print(IntListsNeeded)
            print("It's gonna be trio's")

        else:
            ListsNeeded = counter / 2
            IntListsNeeded = int(ListsNeeded)
            print(IntListsNeeded)
            print("It's gonna be duo's")


    groups()

participents()

【问题讨论】:

  • 您可以使用标准库中的random.choices
  • for user in users: counter += 1 ?为什么? counter == len(users) ... elif participent == 'stop': break ?为什么? else: break 使用 groups() 与用户一起注意...您可能需要查看 random.shuffle(users) 以随机化列表中的参与者并查看 how-do-you-split-a-list-into-evenly-sized-chunks 以将其拆分...搜索 SO 将在 95%所有初学者案例都提供了足够的输入,因此您可以自己解决......所以根本不需要问
  • 如果你有一个特定的问题,让你的代码更短:如果你清楚如何询问参与者并将他们放入一个列表 - 为什么用 10 行来膨胀你的minimal reproducible example 做你知道如何做的事情做?只需硬编码一个列表:users_case_1 = ["a","b","c","d","e"](即 % 3 == 2)和users_case_2 = ["a","b","c","d","e","f"](即 % 3 == 0)并更清楚地说明您的真正问题 - 这不是一个讨论论坛,因此开放式“如何做更好”的问题往往被忽视,因为它们往往显示出没有太多的研究努力。顺便说一句,您的问题到底是什么?
  • 顺便说一句。随机列表也有数百个帖子,f.e. best-way-to-randomize-a-list-of-strings-in-python - 所以基本上你的待办事项(随机化、分区)都是已解决的问题......

标签: python list partitioning


【解决方案1】:

我会提出的一个建议是替换它:

for user in users:
    counter +=1

只需:

counter = len(users)

假设您使用的是 Python 3.8+,另一个建议是替换它:

users = []
while True:
    participent = input('Who is gonna join? ')
    if participent != 'stop':
        users.append(participent)
    elif participent == 'stop':
        break

用这个:

users = []
while participent := input('Who is gonna join? ') != 'stop':
    users.append(participent)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2020-05-13
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多