Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环直到对列表满意为止_Python_Loops_Grouping - Fatal编程技术网

Python 循环直到对列表满意为止

Python 循环直到对列表满意为止,python,loops,grouping,Python,Loops,Grouping,这是我用来生成包含n个成员和x个组的组的代码。然后根据每组中有多少相似的数字对每组进行评分,例如:(1,1,1,1)=1,因为只有1个数字,但是(1,2,3,3)=3,因为有3个数字。我试着在上面打个圈,直到这个地方的9组中的任何一组的速率低于某个z值,但是由于某种原因,它不起作用。有人能根据最后的评分数字提出一种循环该系统的方法吗 import numpy import math import random members=4 n_groups =4 participants=list(ran

这是我用来生成包含n个成员和x个组的组的代码。然后根据每组中有多少相似的数字对每组进行评分,例如:(1,1,1,1)=1,因为只有1个数字,但是(1,2,3,3)=3,因为有3个数字。我试着在上面打个圈,直到这个地方的9组中的任何一组的速率低于某个z值,但是由于某种原因,它不起作用。有人能根据最后的评分数字提出一种循环该系统的方法吗

import numpy
import math
import random
members=4
n_groups =4
participants=list(range(1,members+1))*n_groups
#print participants 
random.shuffle(participants)

with open('myfile1.txt','w') as tf:
    for i in range(n_groups):
        group = participants[i*members:(i+1)*members]
        for participant in group:
            tf.write(str(participant)+' ')
        tf.write('\n')

with open('myfile1.txt','r') as tf:
    g = [list(map(int, line.split())) for line in tf.readlines()]
    print(g)


my_groups =g

def get_rating(group):
    return len(set(group))


for each_grp in my_groups:  
    print(get_rating(each_grp))
这种情况下的输出: [[1, 4, 2, 3], [3, 4, 4, 2], [1, 1, 2, 3], [3, 4, 2, 1]] 4. 3. 3. 四,

我将其简化为4人4组:

[1,4,2,3],[3,4,4,2],[1,1,2,3],[3,4,2,1]] 4(因为第1组有4个不同的数字) 3(因为第2组有3个不同的数字) 3(因为第3组有3个不同的数字) 4(因为第4组有4个不同的数字)

方括号中的东西是4组,下面的4个数字给它打分。我试图得到一个循环,它会一直尝试,直到最后每组的4个评分数字中有一个下降到1,然后停止


因此,我需要一个循环,该循环将不断生成新的组,直到组下面的评分数字(在本例中为:4,3,4)低于某个特定值,如2,2,2

一种有点幼稚的方法是将整个程序包装成一个while循环,用于检查所有组的分数。比如:

# WARNING, UNTESTED CODE
my_groups = []
while any([get_rating(g) for g in groups] lambda x: x < 2):
  # ...Do e'rythang else...
#警告,未测试代码
我的团队=[]
而任何([g组中g的get_评级(g)]λx:x<2):
#…做其他事情。。。
一个更明智的方法是逐个查看您的组,并在每次编写之前获得评分

*使用工作代码更新*

import numpy
import math
import random
members=4
n_groups =4
participants=list(range(1,members+1))*n_groups
#print participants 
random.shuffle(participants)

def get_rating(group):
  return len(set(group))


with open('myfile1.txt','w') as tf:
  for i in range(n_groups):
    group = participants[i*members:(i+1)*members]

    # right here
    while(get_rating(group) < 2):
      # Do it again
      random.shuffle(participants)
      group = participants[i*members:(i+1)*members]

    # now right it
    for participant in group:
        tf.write(str(participant)+' ')
    tf.write('\n')

with open('myfile1.txt','r') as tf:
    g = [list(map(int, line.split())) for line in tf.readlines()]
    print(g)


my_groups =g

for each_grp in my_groups:  
    print(get_rating(each_grp))
导入numpy
输入数学
随机输入
成员=4
n_组=4
参与者=列表(范围(1,成员+1))*n_组
#打印参与者
随机。随机(参与者)
def get_评级(组):
回程透镜(组)
以open('myfile1.txt','w')作为tf:
对于范围内的i(n_组):
组=参与者[i*成员:(i+1)*成员]
#就在这里
而(获得_评级(组)<2):
#再做一次
随机。随机(参与者)
组=参与者[i*成员:(i+1)*成员]
#现在就这样
对于团体中的参与者:
tf.write(str(参与者)+'')
tf.write(“\n”)
以open('myfile1.txt','r')作为tf:
g=[tf.readlines()中的行的列表(map(int,line.split())]
印刷品(g)
my_群=g
对于my_组中的每个_grp:
打印(获得额定值(每个额定值))

一种有点幼稚的方法是将整个程序包装成一个while循环,用于检查所有组的分数。比如:

# WARNING, UNTESTED CODE
my_groups = []
while any([get_rating(g) for g in groups] lambda x: x < 2):
  # ...Do e'rythang else...
#警告,未测试代码
我的团队=[]
而任何([g组中g的get_评级(g)]λx:x<2):
#…做其他事情。。。
一个更明智的方法是逐个查看您的组,并在每次编写之前获得评分

*使用工作代码更新*

import numpy
import math
import random
members=4
n_groups =4
participants=list(range(1,members+1))*n_groups
#print participants 
random.shuffle(participants)

def get_rating(group):
  return len(set(group))


with open('myfile1.txt','w') as tf:
  for i in range(n_groups):
    group = participants[i*members:(i+1)*members]

    # right here
    while(get_rating(group) < 2):
      # Do it again
      random.shuffle(participants)
      group = participants[i*members:(i+1)*members]

    # now right it
    for participant in group:
        tf.write(str(participant)+' ')
    tf.write('\n')

with open('myfile1.txt','r') as tf:
    g = [list(map(int, line.split())) for line in tf.readlines()]
    print(g)


my_groups =g

for each_grp in my_groups:  
    print(get_rating(each_grp))
导入numpy
输入数学
随机输入
成员=4
n_组=4
参与者=列表(范围(1,成员+1))*n_组
#打印参与者
随机。随机(参与者)
def get_评级(组):
回程透镜(组)
以open('myfile1.txt','w')作为tf:
对于范围内的i(n_组):
组=参与者[i*成员:(i+1)*成员]
#就在这里
而(获得_评级(组)<2):
#再做一次
随机。随机(参与者)
组=参与者[i*成员:(i+1)*成员]
#现在就这样
对于团体中的参与者:
tf.write(str(参与者)+'')
tf.write(“\n”)
以open('myfile1.txt','r')作为tf:
g=[tf.readlines()中的行的列表(map(int,line.split())]
印刷品(g)
my_群=g
对于my_组中的每个_grp:
打印(获得额定值(每个额定值))

您也可以使用
numpy
进行此操作

将numpy导入为np
def get_组(成员,n_组):
返回np.random.randint(1,5,(n_组,成员))
g=获取组(4,4)
虽然在[np.unique(sub_g.)中不是1,但对于sub_g,形状[0]:
g=获取组(4,4)
其中:

  • np.random.randint(1,5(n_组,成员))
    生成
    n_组
    长度
    成员的组
    填充
    范围(1,5)
  • np.unique(sub_g).shape[0]
    获取您的评分(组中唯一值的数量)
  • [np.unique(sub_g)。g中sub_g的形状[0]
    g中的每个组重复前面的步骤
  • while not 1 in
    重复循环,直到在上面计算的列表中找到值
    1
    (一组中的所有值都相等)
  • g=get_组(4,4)
    重复步骤1

  • 您也可以使用
    numpy
    进行此操作

    将numpy导入为np
    def get_组(成员,n_组):
    返回np.random.randint(1,5,(n_组,成员))
    g=获取组(4,4)
    虽然在[np.unique(sub_g.)中不是1,但对于sub_g,形状[0]:
    g=获取组(4,4)
    
    其中:

  • np.random.randint(1,5(n_组,成员))
    生成
    n_组
    长度
    成员的组
    填充
    范围(1,5)
  • np.unique(sub_g).shape[0]
    获取您的评分(组中唯一值的数量)
  • [np.unique(sub_g)。g中sub_g的形状[0]
    g中的每个组重复前面的步骤
  • while not 1 in
    重复循环,直到在上面计算的列表中找到值
    1
    (一组中的所有值都相等)
  • g=get_组(4,4)
    重复步骤1

  • 我运行了这个,我无法理解与您的问题相关的输出。这里到底有什么不起作用?它应该是什么样子?给我们看一些输入和输出示例。使用SampleIt编辑它一切正常,但我想添加一个循环,直到底部评级系统中的数字为某个数字,例如2>仍然不清楚。A.