您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 列出元素的比较

5b51 2022/1/14 8:23:26 python 字数 2668 阅读 550 来源 www.jb51.cc/python

我有一个问题,我有点难以解释所以我将使用大量的例子来帮助你们理解并看看你是否能帮助我. 假设我有两个列表,其中包含两个人从最好到最差评价的书名. User1评级为lstA,user2评级为lstB lstA = ['Harry Potter','1984','50 Shades','Dracula'] lstB = ['50 Shades','Dracula','1984','Harry Pott

概述

假设我有两个列表,其中包含两个人从最好到最差评价的书名. User1评级为lstA,user2评级为lstB

lstA = ['Harry Potter','1984','50 Shades','Dracula']
lstB = ['50 Shades','Dracula','Harry Potter']

用户认为’哈利波特’比’德拉库拉’更好(惠普是指数0,德古拉是指数3)

用户2认为“哈利波特”比德古拉更糟糕(惠普是指数3,德古拉是指数1)

在这种情况下,返回一个元组(‘哈利波特’,’德古拉’)[(‘德古拉’,’哈利波特’)也很好]

用户1也比’Dracula’更好地评价’50色调’,用户2也比’Dracula'(分别为2号,3号和0号)更好地评价’50色调’.在这种情况下,没有任何反应.

该程序的最终结果应该返回一个元组列表,所以,

[('Harry Potter','50 Shades'),('Harry Potter','Dracula'),'1984'),('1984','Dracula')]

有人可以帮我指出正确的方向来提出一个给出所有元组的算法吗?

下面的效率不高,但它显示了将此逻辑转换为代码的一种方法

from itertools import combinations

lstA = ['Harry Potter','Harry Potter']

def sign(x):
    """Return +1 if integer is positive,-1 if negative"""
    return (x > 0) - (x < 0)

res = []
for a,b in combinations(lstA,2):
    idx_a1,idx_a2 = lstA.index(a),lstA.index(b)
    idx_b1,idx_b2 = lstB.index(a),lstB.index(b)
    if sign(idx_a1 - idx_a2) != sign(idx_b1 - idx_b2):
        res.append((a,b))

[('Harry Potter','Dracula')]

总结

以上是编程之家为你收集整理的python – 列出元素的比较全部内容,希望文章能够帮你解决python – 列出元素的比较所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶