如何限制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() # 空行分隔各组,看起来更清楚
简单解释
random.sample(countries, 48):直接从国家列表里随机选48个,自动避免重复选取同一个国家。random.shuffle(selected_countries):打乱选中的48个国家的顺序,保证分组结果的随机性。- 最后用循环生成1到12的组号,每组固定取4个国家打印,刚好得到12组每组4个的结果,不会多也不会少。
内容的提问来源于stack exchange,提问作者user24756826
相关产品推荐
相关产品推荐

