【发布时间】:2012-01-07 03:04:14
【问题描述】:
我需要获取两组数据并从两组中生成一组对(元组)。这个结果集只有一个可能的对,即对于两个集合:1,2 和 3, 4,结果应该是:((1, 3), (2, 4))。完整的练习文本可以在这里找到:http://pastebin.com/mUaKV4G7
我需要使用 pop 来执行此操作。这是我目前所拥有的:
def mating_pairs(males, females):
pairs = set()
tmp_males, tmp_females = males.copy(), females.copy()
for male in tmp_males:
for female in tmp_females:
pairs.add(males.pop())
pairs.add(females.pop())
zip(pairs[::2], pairs[1::2])
return pairs
这个函数可以正常工作,直到它到达:
zip(pairs[::2], pairs[1::2])
如果没有它,它会将它们组合在一起,但是当我尝试使用 zip 将它们成对拆分时,我得到了这个错误:
'set' object is not subscriptable
这让我相信它在某处返回 None 而不是正确的结果。
此函数需要同时处理整数和字符串(我认为它不需要按特定顺序配对值),而且两个集合的值数量相同。
有人可以告诉我我做错了什么吗?
【问题讨论】:
-
您是否需要生成所有可能的对,将第一个集合中的每个元素与第二个集合中的每个元素组合在一起?
-
@KL-7 不,只需使用 pop 将第一个值与第二个值配对
-
@Andrew Marsh,这不是家庭作业,而是我正在学习的书中的练习。
-
能否请您修复您发布的代码中的标识?最后两行应该在什么标识级别上并不明显。
-
我假设您使用的是
pop,因为问题告诉您这样做?如果是这样,请记住,这只是一个帮助您思考数据结构操作的练习 - 您永远不会实际上在实际代码中使用pop来执行此操作。