Python:比较两个整数列表的最有效方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:比较两个整数列表的最有效方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1588字,纯文字阅读大概需要3分钟。
内容图文
![Python:比较两个整数列表的最有效方法](/upload/InfoBanner/zyjiaocheng/756/9aae10a3252346dd9456584d4f533810.jpg)
我想在Python 2.6中比较两个整数列表,每个整数列表大小相同.我需要的比较是将列表1中的第一项与列表2中的第一项进行比较,将列表1中的第二项与列表2中的第二项进行比较,依此类推,如果所有列表项都跟随,则返回结果相同的比较标准.它应该表现如下:
list1 = [1,1,1,1]
list2 = [2,1,2,3]
compare(list1,list2)
# returns a "list 1 is <= list 2" response.
list1 = [4,1,4,3]
list2 = [2,1,2,3]
compare(list1,list2)
# returns a "list 1 is >= list 2" response.
list1 = [3,2,3,2]
list2 = [1,4,1,4]
compare(list1,list2)
# returns None— some items in list1 > list2, and some items in list2 > list1.
我想我可以像下面的块一样编写代码,但我不知道它是否最有效.我的程序将调用这个方法很多,所以我想尽可能地简化这个.
def compare(list1,list2):
gt_found = 0
lt_found = 0
for x in range(len(list1)):
if list1[x] > list2[x]:
gt_found += 1
elif list1[x] < list2[x]:
lt_found += 1
if gt_found > 0 and lt_found > 0:
return None #(some items >, some items <)
if gt_found > 0:
return 1 #(list1 >= list2)
if lt_found > 0:
return -1 #(list1 <= list2)
return 0 #(list1 == list2)
它是否已经得到了它的好处(n的大O),或者是否有更快的方法(或者使用系统功能的方式)?
澄清:我希望返回“无”的情况最常发生,因此这很重要.
解决方法:
您可以考虑基于numpy的矢量化比较.
import numpy as np
a = [1,1,1,2]
b = [2,2,4,3]
all_larger = np.all(np.asarray(b) > np.asarray(a)) # true if b > a holds elementwise
print all_larger
True
显然,你可以设计得到答案的东西.
all_larger = lambda b,a : np.all(np.asarray(b) > np.asarray(a))
if all_larger(b,a):
print "b > a"
elif all_larger(a,b):
print "a > b"
else
print "nothing!"
可以完成每种类型的比较,例如<,>,< =,> =.
内容总结
以上是互联网集市为您收集整理的Python:比较两个整数列表的最有效方法全部内容,希望文章能够帮你解决Python:比较两个整数列表的最有效方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。