You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Python分组数量?随机抽取48个元素分12组每组4个

解决随机抽取48个国家并分成12组每组4个的问题

你当前代码的问题在于没有先筛选出目标的48个国家,而是直接遍历全部62个数据,导致分组数量超出预期,同时循环逻辑也没把分组打印和取国家的步骤对应好。下面是简单易懂的修改方案:

原问题代码

import random

countries = [ 'Argentina','France', 'Belgium',  'England','Brazil', 'Portugal', 'Netherlands',  'Spain',    'Italy',    'Croatia',  'United_States',    'Colombia', 'Morocco',  'Mexico',   'Uruguay',  'Germany','Senegal','Japan',    'Switzerland', 'Iran',  'Denmark',  'Ukraine', 'South_Korea',   'Australia',    'Austria', 'Hungary',   'Sweden', 'Poland', 'Wales',    'Nigeria',  'Ecuador',  'Peru',     'Serbia',   'Qatar',    'Russia',   'Czech_Republic', 'Czechia',    'Egypt',    'Ivory_Coast',  'Scotland', 'Türkiye',  'Tunisia',  'Chile',    'Algeria',  'Mali',     'Panama',   'Romania',  'Norway',   'Slovakia',     'Canada',   'Greece', 'Cameroon',   'Costa_Rica',   'Saudi_Arabia',     'Venezuela',    'Jamaica', 'Paraguay', 'Slovenia',  'Iraq','South_Africa',  'Republic_of_Ireland',  'Finland']

group = 1
membersInGroup = 4

for country in countries [:]:
    if membersInGroup == 4 :
        print ("group {} consist of:" .format(group))
        membersInGroup = 0
        group += 1

person = random.choice (countries)
print (person)
membersInGroup += 1
countries.remove (str(person))

修改后的代码(带简单注释)

import random

# 你的国家列表
countries = [ 'Argentina','France', 'Belgium',  'England','Brazil', 'Portugal', 'Netherlands',  'Spain',    'Italy',    'Croatia',  'United_States',    'Colombia', 'Morocco',  'Mexico',   'Uruguay',  'Germany','Senegal','Japan',    'Switzerland', 'Iran',  'Denmark',  'Ukraine', 'South_Korea',   'Australia',    'Austria', 'Hungary',   'Sweden', 'Poland', 'Wales',    'Nigeria',  'Ecuador',  'Peru',     'Serbia',   'Qatar',    'Russia',   'Czech_Republic', 'Czechia',    'Egypt',    'Ivory_Coast',  'Scotland', 'Türkiye',  'Tunisia',  'Chile',    'Algeria',  'Mali',     'Panama',   'Romania',  'Norway',   'Slovakia',     'Canada',   'Greece', 'Cameroon',   'Costa_Rica',   'Saudi_Arabia',     'Venezuela',    'Jamaica', 'Paraguay', 'Slovenia',  'Iraq','South_Africa',  'Republic_of_Ireland',  'Finland']

# 第一步:从62个国家里随机挑48个,不会重复
selected_countries = random.sample(countries, 48)

# 第二步:把挑出来的48个打乱顺序,让分组更随机
random.shuffle(selected_countries)

# 第三步:分成12组,每组4个,然后打印
for group_num in range(1, 13):
    # 计算每组的起始位置:第1组从0开始,第2组从4开始,以此类推
    start = (group_num - 1) * 4
    # 取出当前组的4个国家
    current_group = selected_countries[start:start+4]
    # 打印分组信息
    print(f"group {group_num} consist of:")
    for country in current_group:
        print(country)
    print()  # 空行分隔各组,看起来更清楚

简单解释

  1. random.sample(countries, 48):直接从国家列表里随机选48个,自动避免重复选取同一个国家。
  2. random.shuffle(selected_countries):打乱选中的48个国家的顺序,保证分组结果的随机性。
  3. 最后用循环生成1到12的组号,每组固定取4个国家打印,刚好得到12组每组4个的结果,不会多也不会少。

内容的提问来源于stack exchange,提问作者user24756826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:22:51