gpt4 book ai didi

python - 在 Python、Ruby、Haskell(或其他语言)中迭代列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:44 24 4
gpt4 key购买 nike

更新:我意识到我提出的问题非常糟糕。这是第二次运行。

考虑以下函数:

myList = []
optimumList = []

def findOptimumListItems():
n = 5

for i in range (n + 1):
for j in range (n + 1 - i):
myList.append((i, j, n-i-j))

for i in myList:
win = 0.0
draw = 0.0
for j in myList:
score = 0
if (i[0] > j[0]):
score += 1
if (i[0] == j[0]):
score += 0.5
if (i[1] > j[1]):
score += 1
if (i[1] == j[1]):
score += 0.5
if (i[2] > j[2]):
score += 1
if (i[2] == j[2]):
score += 0.5
if (score == 2):
win += 1
if (score == 1.5):
draw += 1
if (win/(len(myList)-win-draw) > 1.0):
optimumList.append(i)

return optimumList

首先我列一个 list 。对于 n = 5,生成的列表是:

[(0, 0, 5), (0, 1, 4), (0, 2, 3), (0, 3, 2), (0, 4, 1),
(0, 5, 0), (1, 0, 4), (1, 1, 3), (1, 2, 2), (1, 3, 1),
(1, 4, 0), (2, 0, 3), (2, 1, 2), (2, 2, 1), (2, 3, 0),
(3, 0, 2), (3, 1, 1), (3, 2, 0), (4, 0, 1), (4, 1, 0),
(5, 0, 0)]

然后,该函数获取列表中的每个元素并将其与列表本身进行比较。这就是你的做法:假设我正在比较 [0, 0, 5] 和 [3, 1, 1]。 0 输给 3(所以没有积分),0 输给 1,所以没有积分,5 胜 1(为此得 1 分)。平局得0.5分,赢球得1分。对于任何项目,如果赢多于输,则该项目被认为是最佳的,并被添加到最佳列表中。

对于 n = 5,最佳列表是:

[(0, 2, 3), (0, 3, 2), (1, 1, 3), (1, 2, 2), (1, 3, 1), (2, 0, 3),
(2, 1, 2), (2, 2, 1), (2, 3, 0), (3, 0, 2), (3, 1, 1), (3, 2, 0)]

我的问题是:如何以简洁的方式编写上述函数?我对函数式算法特别感兴趣。 Python、Ruby、Java、Haskell 的答案将不胜感激。 (话虽如此,如果您有任何语言的简洁解决方案;那没关系。)

很抱歉重复了同样的问题。我同意原来的问题很困惑而且很难理解。我希望现在一切都清楚了。

更新(根据 rampion 的评论):是否有解决此(或此类)问题的有效算法?

最佳答案

第二次更新:太好了——现在我完全明白你想要什么了。这与您最近编辑中的代码的作用相同:

def optimize(myList):
score_tup = lambda tup_a, tup_b: sum(1.0 if a > b else 0.5 if a == b else 0 for a, b in zip(tup_a, tup_b))
scores = ((tup_a, [score_tup(tup_a, tup_b) for tup_b in myList]) for tup_a in myList)
scores = ((tup, score.count(2), score.count(1.5)) for tup, score in scores)
return [tup for tup, win, draw in scores if (win * 1.0 / (len(myList) - win - draw)) > 1.0]

a = 5
myList = [(i, j, a-i-j) for i in range(a + 1) for j in range(a + 1 - i)]
print myList
print optimize(myList)

如果您想查看此答案的以前版本,请检查编辑;这太长了。

关于python - 在 Python、Ruby、Haskell(或其他语言)中迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com