python中比较两个列表的实例方法

cmp() 方法用于比较两个列表的元素。

cmp()方法语法

cmp(list1, list2)

参数:

list1 -- 比较的列表。list2 -- 比较的列表。

返回值:

如果比较的元素是同类型的,则比较其值,返回结果。

如果两个元素不是同一种类型,则检查它们是否是数字。

如果是数字,执行必要的数字强制类型转换,然后比较。如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")否则,通过类型名字的字母顺序进行比较。

如果有一个列表首先到达末尾,则另一个长一点的列表"大"。

如果我们用尽了两个列表的元素而且所 有元素都是相等的,那么结果就是个平局,就是说返回一个 0。

以下实例展示了 cmp()函数的使用方法:

#!/usr/bin/python

list1, list2 = [123, 'xyz'], [456, 'abc']

print cmp(list1, list2);

print cmp(list2, list1);

list3 = list2 + [786];

print cmp(list2, list3)

Python3不在支持cmp方法:

可用方法有:

表达式减(-)法:

print((a>b)-(a<b)) #0,表示俩list相等

operator模块比较运算

import operator

a=[1, 2, 3, 4, 5 ]

b=[1, 2, 3, 4, 5,6 ]

c=[1, 2, 3, 4, 5 ]

print(operator.lt(a,b)) #=> True ,小于<

print(operator.gt(a,b)) #=> False ,大于>

print(operator.eq(a,c)) #=> True ,等于==

print(operator.ne(b,a)) #=> True ,不等于!=

print(operator.le(a,b)) #=> True ,小于等于<=

print(operator.ge(b,a)) #=> True ,大于等于>=

扩展学习:

两个列表,随机产生4个不相等的数,计算一下,相同位置上的元素相等的个数,用k1表示。

b列表中的元素在a列表中,但位置不相同,有多少个,用k2表示。

例如:

a=[0, 4, 7, 3]
b=[7, 1, 0, 3]

k1= 1 (只有第4个元素相等,k1=1)
k2= 2(两个列表中都有0和7,但位置不同,k2=2)

a=[]
b=[]
while(len(a)!=4):
  x=randint(0,9)
  if x not in a:
    a.append(x)

while(len(b)!=4):
  x=randint(0,9)
  if x not in b:
    b.append(x)

print(a)
print(b)
print()
k1=k2=0
for i in range(4):
  if a[i]==b[i]:
    k1+=1
  if b[i] in a and b[i]!=a[i]:
    k2+=1

print('k1=',k1)
print('k2=',k2)
时间: 2019-07-02

关于Python元祖,列表,字典,集合的比较

定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7-9j] 1.list(str):将str转换成list类型,str可以使字符串也可以是元组类型 2.aList.append('test'):追加元素到列表中去 3.del aList[1]:删除列表中下标为1的元素 del aList:删除整个列表 4.cmp(list1,list2):比较两个列

Python实现比较两个列表(list)范围

有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE. 详细题目如下: Create a function, this function receives two lists as parameters, each list indicates a scope of numbers, the function judges whether list2 is included in list1. Function signature:     differ_scope(list

python比较两个列表大小的方法

本文实例讲述了python比较两个列表大小的方法.分享给大家供大家参考.具体如下: L1 = [1, ('a', 3)] L2 = [1, ('a', 2)] print L1 < L2, L1 == L2, L1 > L2 # less,equal,greater: tuple of results 运行结果如下: False False True 希望本文所述对大家的Python程序设计有所帮助.

python比较两个列表是否相等的方法

本文实例讲述了python比较两个列表是否相等的方法.分享给大家供大家参考.具体如下: 这里演示了 == 和 is两种方法的区别: L1 = [1, ('a', 3)] # same value, unique objects L2 = [1, ('a', 3)] print L1 == L2, L1 is L2 # equivalent?, same object? 运行结果如下: True False 希望本文所述对大家的Python程序设计有所帮助.

对python中两种列表元素去重函数性能的比较方法

测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import time import random l1 = [] leng = 10L for i in range(0,leng): temp = random.randint(1,10) l1.append(temp) print '测试列表长度为:',leng #first set last = time.

Python中map和列表推导效率比较实例分析

本文实例讲述了Python中map和列表推导效率比较.分享给大家供大家参考.具体分析如下: 直接来测试代码吧: #!/usr/bin/env python # -*- coding: utf-8 -*- # list comprehension and map import time def test(f, name): st = time.time() f() print '%s %ss'%(name, time.time()-st) TIMES = 1000 ARR = range(1000

python中map、any、all函数用法分析

本文实例讲述了python中map.any.all函数用法.分享给大家供大家参考.具体分析如下: 最近想学python,就一直比较关注python,昨天在python吧看到有个帖子提问怎么在python中怎么判断密码是否符合规范,回帖中有很多用循环的,除此外还有一个没有用循环,代码非常简练,下面是代码: def volid(pwd): a = any(map(str.isupper,pwd)) b = any(map(str.islower,pwd)) c = any(map(str.isdig

Python中的单继承与多继承实例分析

本文实例讲述了Python中的单继承与多继承.分享给大家供大家参考,具体如下: 单继承 一.介绍 Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义.派生类的定义如下所示: class DerivedClassName(BaseClassName1): <statement-1> . . . <statement-N> 需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类

python中pygame针对游戏窗口的显示方法实例分析(附源码)

本文实例讲述了python中pygame针对游戏窗口的显示方法.分享给大家供大家参考,具体如下: 在这篇教程中,我将给出一个demo演示: 当我们按下键盘的'f'键的时候,演示的窗口会切换到全屏显示和默认显示两种显示模式 并且在后台我们可以看到相关的信息输出: 上面给出了一个简单的例子,当然在pygame的官方文档中有对显示策略的更权威的说明: http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode ''' pyga

Python中字典的浅拷贝与深拷贝用法实例分析

本文实例讲述了Python中字典的浅拷贝与深拷贝用法.分享给大家供大家参考,具体如下: 最近发现的一个很值得记录的东西就是python字典的浅拷贝问题 首先,明确一下什么是浅拷贝,什么是深拷贝: 简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存 也就是说,在浅拷贝情况下,不同引用指向的是同一块内存,改其中一个引用,那么其他引用也会跟着改变 应用到python 的字典复制过程: # codi

python中协程实现TCP连接的实例分析

在网络通信中,每个连接都必须创建新线程(或进程) 来处理,否则,单线程在处理连接的过程中, 无法接受其他客户端的连接.所以我们尝试使用协程来实现服务器对多个客户端的响应. 与单一TCP通信的构架一样,只是使用协程来实现多个任务同时进行. #服务端 import socket from gevent import monkey import gevent monkey.patch_all() def handle_conn(seObj): while True: re_Data = seObj.r

python中map()函数的使用方法示例

前言 在python里有一个函数map(),它有点高大上的感觉.本文将详细给大家介绍python中map()函数使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 或许你已经看过GOOGLE最挣钱的论文: "MapReduce: Simplified Data Processing on Large Clusters" Google的那篇MapReduce论文里说:Our abstraction is inspired by the map and redu

Python学习笔记之列表推导式实例分析

本文实例讲述了Python学习笔记之列表推导式.分享给大家供大家参考,具体如下: 列表推导式 列表推导式可以快速简练地创建列表 之前的复杂写法: capitalized_cities = [] for city in cities: capitalized_cities.append(city.title()) 简化后的写法: capitalized_cities = [city.title() for city in cities] 由此可见:借助列表推导式,我们可以使用 for 循环用一步创

python中计算一个列表中连续相同的元素个数方法

最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现,最先想到的就是itertools: import itertools a = [1,1,1,1,2,2,2,3,3,1,1,1,3] print max([len(list(v)) for k,v in itertools.groupby(a)]) 但是如果不想用itertools呢? 可以尝试以下的办法,效率还比itertools高一个数量级!

在Python中预先初始化列表内容和长度的实现

如果想设置相同的初值和想要的长度 >>> a=[None]*4 >>> print(a) [None, None, None, None] 如果我们预先知道列表的长度,那预先初始化该长度的列表,然后对每一个赋值,会比每次list.append()更有效率. 如果想要序列初值,可以用range函数,但注意,range函数返回的是可迭代对象,需要转化成list >>> b=list(range(10)) >>> print(b) [0,