前言

这节课我们继续谈一下Python列表一些知识

知识点

Python常用操作符

  • 比较操作符
  1. >>> list1 = [123]
  2. >>> list2 = [234]
  3. >>> list1 > list2
  4. False
  5. >>> list1 = [1]
  6. >>> list2 = ['b']
  7. >>> list1 > list2
  8. Traceback (most recent call last):
  9. File "<pyshell#9>", line 1, in <module>
  10. list1 > list2
  11. TypeError: '>' not supported between instances of 'int' and 'str'
  12. >>> list2 = [3,'b']
  13. >>> list1 > list2
  14. False
  15. 我们发现列表还会比较大小,那如果有两个元素的列表,或者多个元素的列表,怎么比较呢?
  16. >>> list1 = [123,456]
  17. >>> list2 = [234,123]
  18. >>>
  19. >>> list1 > list2
  20. False
  21. >>>
  22. 当有多个元素时,默认是从索引位置0元素开始比较,不用考虑后面的元素
  23. 字符串比较就是ASCII码大小
  24. >>> list1 = ['a']
  25. >>> list2 = ['b']
  26. >>> list1 > list2
  27. False
  28. >>> list3 = ['B']
  29. >>> list2 > list3
  30. True
  31. >>> list1 > list2
  32. False
  33. >>> list1 > list3
  34. True
  35. >>> list4 = ['A']
  36. >>> list4 > list3
  37. False
  • 逻辑操作符
  1. >>> list1 = [123,456]
  2. >>> list2 = [234,123]
  3. >>> list3 = [123,456]
  4. >>> (list1 < list2) and (list1 == list2)
  5. False
  6. >>> (list1 < list2) and (list1 == list3)
  7. True
  8. >>>
  • 连接操作符
  1. >>> list4 = list1 + list2
  2. >>> list4
  3. [123, 456, 234, 123]
  4. >>> list1 + '小甲鱼'
  5. Traceback (most recent call last):
  6. File "<pyshell#9>", line 1, in <module>
  7. list1 + '小甲鱼'
  8. TypeError: can only concatenate list (not "str") to list
  9. + 号两边 数据类型必须一致。
  • 重复操作符
  1. >>> list3
  2. [123, 456]
  3. >>> list3 * 3
  4. [123, 456, 123, 456, 123, 456]
  5. >>> list3 *= 3
  6. >>> list3
  7. [123, 456, 123, 456, 123, 456]
  8. >>> list3 *= 5
  9. >>> list3
  10. [123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]

成员关系操作符

  1. >>> 123 in list3
  2. True
  3. >>> '小甲鱼' not in list3
  4. True
  5. >>> 123 not in list3
  6. False
  7. >>> list5 = [123,['小甲鱼','牡丹'],456]
  8. >>>
  9. >>>
  10. >>> list5
  11. [123, ['小甲鱼', '牡丹'], 456]
  12. >>> '小甲鱼' in list5
  13. False
  14. >>> '小甲鱼' in list5[1]
  15. True
  16. >>> list5[1][1]
  17. '牡丹'

列表的一些其他方法

  1. >>> dir(list)
  2. [...,'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

count

  1. >>> list3
  2. [123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
  3. >>> list3.count(123)
  4. 15

index

  1. >>> a = [1,2,3,4,5,6,7,'a','v',1,3]
  2. >>> a.index(1)
  3. 0
  4. >>> a.index(1,5,10)
  5. 9

reverse

  1. >>> list3.reverse()
  2. >>> list3
  3. [456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123]

sort

  1. >>> list3.sort()
  2. >>> list3
  3. [123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456]
  4. >>> list6 = [4,2,5,1,9,23,32,0]
  5. >>> list6.sort()
  6. >>> list6
  7. [0, 1, 2, 4, 5, 9, 23, 32]
  8. >>> list6 = [4,2,5,1,9,23,32,0]
  9. SyntaxError: unexpected indent
  10. >>> list6 = [4,2,5,1,9,23,32,0]
  11. >>> (list6.sort()).reverse()
  12. Traceback (most recent call last):
  13. File "<pyshell#54>", line 1, in <module>
  14. (list6.sort()).reverse()
  15. AttributeError: 'NoneType' object has no attribute 'reverse'
  16. >>> list6 = list6.sort()
  17. >>> list6
  18. >>> list6 = [4,2,5,1,9,23,32,0]
  19. >>> list6.sort()
  20. >>> list6
  21. [0, 1, 2, 4, 5, 9, 23, 32]
  22. >>> list6.reverse()
  23. >>> list6
  24. [32, 23, 9, 5, 4, 2, 1, 0]
  25. >>> list6 = [4,2,5,1,9,23,32,0]
  26. >>>
  27. >>>
  28. >>> list6.sort(reverse=True)
  29. >>> list6
  30. [32, 23, 9, 5, 4, 2, 1, 0]

课后作业

测试题

  • 如果不上机操作,你觉得会打印什么内容?
  1. >>> old = [1, 2, 3, 4, 5]
  2. >>> new = old
  3. >>> old = [6]
  4. >>> print(new)
  5. 结果:
  6. [1,2,3,4,5]
  • 请问如何将下边的列表中的小甲鱼修改为小鱿鱼?
  1. list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
  2. 方法:
  3. >>> list1[1][2][0] = '小鱿鱼'
  4. >>> list1
  5. [1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]

如果想修改成['小甲鱼','小鱿鱼'],可以这样 :

  1. >>> list1[1][2] = ['小甲鱼','小鱿鱼']
  2. >>> list1
  3. [1, [1, 2, ['小甲鱼', '小鱿鱼']], 3, 5, 8, 13, 18]
  4. >>>
  • 要对一个列表进行顺序排序,请问使用什么方法?

    列表名.sort()
  • 要对一个列表进行逆序排序,请问使用什么方法?

    列表名.sort(reverse=True)

    或者

    列表名.sort()

    列表名.reverse()
  • 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy()clear()
  1. copy()方法跟使用切片拷贝是一样的
  2. >>> list1 = [1,5,89,2,6,21,6,5,4]
  3. >>> list2 = list1.copy()
  4. >>> list2
  5. [1, 5, 89, 2, 6, 21, 6, 5, 4]
  6. >>>
  7. >>> list1.sort()
  8. >>> list1
  9. [1, 2, 4, 5, 5, 6, 6, 21, 89]
  10. >>> list2
  11. [1, 5, 89, 2, 6, 21, 6, 5, 4]
  12. >>>
  13. clear()方法用于清空列表的元素,但要注意,清空后列表仍然存在,只是变成一个空列表。
  14. >>> list1.clear()
  15. >>> list1
  16. []
  17. >>> list2
  18. [1, 5, 89, 2, 6, 21, 6, 5, 4]
  19. >>> list2.clear(1)
  20. Traceback (most recent call last):
  21. File "<pyshell#15>", line 1, in <module>
  22. list2.clear(1)
  23. TypeError: clear() takes no arguments (1 given)
  • 你有听说过列表推导式或列表解析吗?
  1. >>> [ i*i for i in range(10) ]
  2. 输出内容:
  3. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  4. 打印了09各个数的平方
  5. 列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言Haskell。它是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
  6. [有关A的表达式for A in B]
  7. 例如:
  8. >>> list1 = [x**2 for x in range(10)]
  9. >>> list1
  10. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  11. 相当于
  12. list1 = []
  13. for x in range(10):
  14. list1.append(x**2)

问题:请先在IDLE中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

  1. >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
  2. 输出结果:
  3. >>> list1
  4. [(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]
  5. >>>
  6. list1= []
  7. for x in range(10):
  8. for y in range(10):
  9. if x%2 ==0 and y%2 !=0:
  10. list1.append((x,y))
  11. print(list1)
  12. ================== RESTART: C:/Users/ThinkPad/Desktop/5.py ==================
  13. [(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]
  • 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分

  1. list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
  2. list2 = ['4.阿迪达斯','2.李宁','3.鱼c工作室','1.耐克']
  3. list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
  4. >>> list3
  5. ['1.耐克:just do it', '2.李宁:一切皆有可能', '3.鱼c工作室:让编程改变世界', '4.阿迪达斯:Impossible is Nothing']
  6. >>> for each in list3:
  7. print(each)
  8. 1.耐克:just do it
  9. 2.李宁:一切皆有可能
  10. 3.c工作室:让编程改变世界
  11. 4.阿迪达斯:Impossible is Nothing
  12. list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
  13. list2 = ['4.阿迪达斯','2.李宁','3.鱼c工作室','1.耐克']
  14. list3 = []
  15. for slogan in list1:
  16. for name in list2:
  17. if slogan[0] == name[0]:
  18. list3.append((name + ':'+ slogan[2:]))
  19. for each in list3:
  20. print(each)
  21. ================== RESTART: C:/Users/ThinkPad/Desktop/5.py ==================
  22. 1.耐克:just do it
  23. 2.李宁:一切皆有可能
  24. 3.c工作室:让编程改变世界
  25. 4.阿迪达斯:Impossible is Nothing
  26. >>>

零基础入门学习Python(12)--列表:一个打了激素的数组(3)的更多相关文章

  1. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  2. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  3. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  4. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  5. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  6. 零基础入门学习Python(11)--列表:一个打了激素的数组(2)

    前言 上节课我们介绍一个打了激素的数组,叫做列表.列表我们比作一个大仓库,你所能够具现化的东西,都可以往里面扔,它包罗万象.另外还介绍了三个往列表添加元素的方法,分别是: append(),exten ...

  7. 零基础入门学习Python(10)--列表:一个打了激素的数组

    前言 有时候我们需要把一些东西暂时保存起来,因为他们有着一些直接或间接的联系,我们需要把它们放在某个组或者集合中,未来可能用得上. 很多接触过编程的朋友都知道,都接触过数组这个概念,那么数组这个概念事 ...

  8. 零基础入门学习Python(13)--元组:戴上了枷锁的列表

    前言 这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表 我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验.但是呢,凡是拥有大权利的 ...

  9. 零基础入门学习Python(19)--函数:我的地盘听我的

    知识点 函数与过程 在许多编程语言中,函数(function)是有返回值的,过程(procedure)是简单.特殊并且没有返回值的.而在Python中,严格来说只有函数没有过程. 例如: >&g ...

  10. 零基础入门学习Python(36)--类和对象:给大家介绍对象

    知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...

随机推荐

  1. python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象

    环境: win10 python3.6 selenium2.53.1 准备工作:先安装pymysql python2.x链接数据库使用MySQLdb,而python3.x链接数据库使用pymysql ...

  2. 洛谷 P3622 [APIO2007]动物园【状压dp】

    看成网络流建图想了好久... 实际上5个是可以状压的 设f[i][k]为到第i个围栏状态为k的方案数,因为考虑到重复,设g[i][k]记录i开始,状态为k的孩子有几个 状态转移很好想:f[j][k]= ...

  3. jQuery笔记之Easing Plugin

    jQuery easing 使用方法首先,项目中如果需要使用特殊的动画效果,则需要在引入jQuery之后引入jquery.easing.1.3.js<script type="text ...

  4. 原生JavaScript之深度克隆

    先看一下克隆成功后的结果 深度克隆就是将obj的属性克隆到obj1上面,并且在obj上面修改属性不影响obj1上面的属性. 1.先把所有的值都遍历一遍(看是引用值和原始值)用for ( var pro ...

  5. Spark MLlib机器学习

    前言 Spark MLlib是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器.

  6. ubuntu下进入xampp mysql命令行

    在命令行下进入到/opt/lampp/bin目录,使用命令:sudo ./mysql,回车即可. 注意:运行这个命令需要加上sudo,以root权限来运行,不然有些数据库没有权限查看.

  7. (转)C语言运算符优先级 详细列表

    C语言运算符优先级 详细列表 文章转自:Slyar Home 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右   () 圆括号 (表达式)/函数 ...

  8. 题解报告:Luogu P3368 【模板】树状数组 2(区间修改,单点查询)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  9. Codeforces Round #235 (Div. 2) D (dp)

    以为是组合,后来看着像数位dp,又不知道怎么让它不重复用..然后就没思路 了. 其实状压就可以了 状压是可以确定一个数的使用顺序的 利用01也可以确定所有的数的使用以及不重复 dp[i+1<&l ...

  10. 关于min-height:100%的解决办法

    前几天碰到一个问题,在用bs和jq2.2.0开发时,min-height设为100%在firefox和ie下没有起作用,先用css改了一下,但是min-height虽然是奏效了,但同时出现了其他css ...