def findPair(students, Robert):
#...
if len(students) == 2:
#do something
return
else:
for friend in friendsOfRobert:
print(students)
leftStudents = removePairFromStudents(students, friend, Robert)
if len(leftStudents) != 0:
findPair(leftStudents, leftStudents[0])
return
我不太明白为什么students
在for
内部循环时会被修改。它甚至不是全局变量。下面只是帮助您了解代码的结构。你知道吗
students
中查找friendsOfRobert
for循环
(1)假设一个friend
和Robert
配对。你知道吗
(2)leftStudent
:从students
中删除friend
和Robert
(3)重复findPair
,但这次没有friend
和Robert
。下一个等价的Robert
是随机选择的(leftStudents[0]
)
在旁注中,我解决了这个问题,方法是记住之前删除的一对,每次在跳入下一个循环之前重建原始的students
集(下面有代码)。你知道吗
if len(students) == 2:
if len(justPaired) != 0:
students.append(justPaired[0])
students.append(justPaired[1])
# do something
return
编辑:删除不必要的示例
函数不获取其参数的副本。他们得到了参数的引用副本。所以,当你写作的时候
行
x.append(3)
影响传递的实际列表,而行x = [2, 4, 6]
没有影响,因为它将引用的副本重新分配给参数。你知道吗相关问题 更多 >
编程相关推荐