资讯专栏INFORMATION COLUMN

《Python基础教程第二版》第二章-Python列表和元祖

darryrzhong / 2712人阅读

摘要:第二个索引元素不在分片内。显示操作索引指向第个元素,第个元素不存在。序列加法乘法表示个空列表空列表用初始化成员资格运算符布尔运算符,检查值是否在序列中。修改列表,没有返回值。在原位置对列表排序。

序列

例:

</>复制代码

  1. Edward = ["abc", 12]

序列中的所有元素都是有编号的,从0开始递增。

</>复制代码

  1. Note: 使用负数索引-1,Python会从右边,也就是从最后一个元素开始计数。最后一个元素的位置编号是-1.
索引操作

字符串、函数可以直接对返回结果进行操作

</>复制代码

  1. hello[1]
  2. fo = raw_input("year: ")[2]
分片

分片通过冒号隔开两个索引。

代码:

</>复制代码

  1. numbers = [1, 2, 3, 4]
  2. number[1:2]

输出:

</>复制代码

  1. [2, 3]

第一个索引:

</>复制代码

  1. 提取的第一个元素的编号

第二个索引:

</>复制代码

  1. 分片之后,剩余部分的第一个元素的编号。
  2. Note:分片第二个索引指向的元素取不到。

简而言之:

</>复制代码

  1. 分片操作的实现需要两个索引作为边界。
  2. 第一个索引元素是包含在分片内的。
  3. 第二个索引元素不在分片内。

思考:

</>复制代码

  1. numbers = [1,2,3,4,5,6,7,8,9,10]
  2. 如何访问最后3个元素。

1.显示操作

</>复制代码

  1. numbers[7:10]
  2. #索引10指向第11个元素,第11个元素不存在。为了让分片包含最后一个元素,必须提供最后一个元素的下一个元素的索引作为边界。

2.从尾开始计数(不可行)

</>复制代码

  1. numbers[-3:-1]
  2. #无法访问最后一个元素

3.使用索引0访问最后一个元素(不可行)

</>复制代码

  1. numbers[-3:0]
  2. #只要分片最左的索引比右边的晚出现在序列中,一律返回空序列。

4.置空最后一个索引(优雅,推荐)

</>复制代码

  1. numbers[-3:]

同样适用序列开始的元素:

</>复制代码

  1. numbers[:3]
复制序列

复制整个序列,将两个索引都置空。

</>复制代码

  1. number2 = numbers[:]
  2. note:
  3. number2 = numbers
  4. #不可行,会将number2与numbers指向同一个序列
步长

第三个参数是步长。Python中默认步长为1.

</>复制代码

  1. numbers[0:10:2]
  2. #取步长为2,取间隔为1个元素的分片。

Note:

</>复制代码

  1. 步长不能为0。
  2. 负数步长,分片从右到左提取元素。
序列加法、乘法

</>复制代码

  1. endings = ["st","nd",‘rd’] + 17*["th"]
  2. + ["st","nd",‘rd’] + ["th"]*7
  3. #17*["th"]表示17个["th"]
空列表、None

空列表

</>复制代码

  1. []

用None初始化

</>复制代码

  1. seq = [None]*10
成员资格

in运算符:布尔运算符,检查值是否在序列中。

</>复制代码

  1. subject = "$$$ abssdjk $$$!"
  2. "$$$" in subject
  3. users = ["bob","jack"]
  4. raw_input("your name:") in users
长度、最小值和最大值

内建函数

</>复制代码

  1. len、min、max

len函数

</>复制代码

  1. 返回序列中所有包含元素的数量

min函数、max函数

</>复制代码

  1. 返回序列中最大和最小的元素

Note:

</>复制代码

  1. 序列包括:
  2. 列表、字符串、元组
  3. 故:以上序列的特种对于列表字符串和元组都适用。
列表

列表可以修改:

元素赋值

元素删除

分片赋值

列表方法

list函数

</>复制代码

  1. 用于创建列表,适用于所有类型的序列,例如字符串

例:

</>复制代码

  1. list("hello")#根据字符串创建列表["h","e","l","l","o"]

列表转字符串

</>复制代码

  1. "".join(somelist)
列表基本操作

</>复制代码

  1. 1. 元素赋值
  2. 2. 删除元素
  3. 3. 分片赋值

1. 元素赋值

</>复制代码

  1. x = [1,2,3]
  2. x[1] = 6

2. 删除元素

</>复制代码

  1. names = ["bob","jack","afra"]
  2. del names[2]
  3. #列表长度减一

3. 分片赋值

</>复制代码

  1. name = list("afra")
  2. name[1:] = list("lpha")

分片赋值:
1.可以使用与原序列不等长的序列将分片替换

</>复制代码

  1. name = list("perl")
  2. name[1:] = list("ython")

2.可以在不需要替换任何原有元素的情况下插入新元素

</>复制代码

  1. number = [1,5]
  2. number[1:1] = [2,3,4]

3.可以删除元素

</>复制代码

  1. number = [1,2,3,4,5]
  2. number[1:4] = []
列表方法

方法:

</>复制代码

  1. 一个与某些对象有紧密联系的函数。

方法调用:

</>复制代码

  1. 对象.方法(args)

列表方法

</>复制代码

  1. 1.append
  2. 2.count
  3. 3.extend
  4. 4.index
  5. 5.insert
  6. 6.pop
  7. 7.remove
  8. 8.reverse
  9. 9.sort
  10. 10.高级排序

1.append
在列表末尾追加新对象,直接修改原列表

</>复制代码

  1. number = [1,2,3]
  2. number.append(4)

2.count
统计某个元素在列表中出现的次数

</>复制代码

  1. x = [1,1,2,2,2,3]
  2. x.count(1)

3.extend
在列表末尾一次性追加另一序列的多个值。即:用新列表扩展原因的列表。
Note:

</>复制代码

  1. extend和连接操作"+"的区别:
  2. extend方法修改了序列
  3. 原始的连接操作不修改序列,返回一个全新的列表
  4. 连接操作效率比extend方法低

4.index
从列表中找出某个值第一个匹配项的索引位置

</>复制代码

  1. knight = ["hao","a"]
  2. knight.index("hao")

5.insert
将对象插入到列表中。

</>复制代码

  1. numbers = [1,2,3]
  2. number.insert(3,"four")

6.pop
移除列表中的一个元素(默认最后一个),返回该元素的值。
pop方法是唯一修改列表又返回元素值的列表方法。
Python中实现栈:,出栈pop,入栈append

</>复制代码

  1. x[1,2,3,4]
  2. x.pop()
  3. x.pop(0)

Note:在JavaScript中,pop只弹出栈顶值,不会返回栈顶值,可使用top()获取栈顶值

7.remove
移除列表中某个值的第一个匹配项。修改列表,没有返回值。

</>复制代码

  1. x = ["i","want","to","to"]
  2. x.remove("to")

8.reverse
将列表倒置。改变列表,没有返回值。

</>复制代码

  1. x = [1,2,3]
  2. x.reverse()

9.sort
在原位置对列表排序。修改列表,返回None。

</>复制代码

  1. x = [8,7,2,43,45]
  2. x.sort()

思考:

</>复制代码

  1. 用户需要一个排好序的列表副本,但是保留原有列表不变。

思路:

</>复制代码

  1. 把x的副本赋值给y,对y进行排序。

代码:

</>复制代码

  1. x = [1,2,4,5,6,1,23,2,2,3,]
  2. y = x[:]
  3. y.sort()
  4. #强调:x[:]是一种很有效率的复制整个列表的方法。只是简单的把x赋值给y,会让x和y都指向同一个列表。

使用sorted函数

</>复制代码

  1. #获取已排序的列表的副本
  2. x = [1,3,4,5,2]
  3. y = sorted(x)
  4. #note:sort()是列表方法,sorted是函数

10.高级排序

1.cmp自定义比较函数

</>复制代码

  1. numbers.sort(cmp)

2.key 为每个元素创建一个键,根据键排序

</>复制代码

  1. numbers.sort(key = len)

3.reverse = true

</>复制代码

  1. numbers.sort(reverse = true)
元组

圆括号表示,不可修改

</>复制代码

  1. (1,2,3)

空元组

</>复制代码

  1. ()

一个值的元组

</>复制代码

  1. (42,)

Note:

</>复制代码

  1. 必须加逗号,即使只有一个值。逗号非常重要。
  2. 4+2#不是元组
  3. (4+2,) #是元组
tuple函数

一序列作为参数转换为元组

</>复制代码

  1. tuple([1,2,3])#(1,2,3)
  2. tuple("abc")#(a,b,c)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42215.html

相关文章

  • Python基础教程二版》第五章-条件、循环其他语句(一)

    摘要:所解包的序列中的元素数量必须和赋值符号左边的变量数量完全一致。其中,冒号标识语句块开始块中每一个语句都是缩进相同量退回到和已经闭合的块一样的缩进量时,表示当前块结束。成员资格运算符字符串和序列比较字符串可按照字母顺序比较。 print和import print打印多个表达式,用逗号,隔开 print abc:, 42, nonono #输出在每个参数之间添加空格 print在结尾处加上...

    宋华 评论0 收藏0
  • Python基础教程二版》第五章-条件、循环其他语句(二)

    摘要:处理不等长序列时,止于最短序列。版本一不推荐版本二这段代码在基础教程第二版我认为原书代码中的缩进格式应该是错了版本三推荐使用内建函数翻转和排序迭代子句列表推导式轻量级循环 循环 while 代码1 x = 1 while x

    RayKr 评论0 收藏0
  • 《零基础python二版》已经放出

    摘要:零基础学第二版已经放出,敬请各位访问网站因为本人精力有限,同时维护两地有难度。并且教程还不稳定,正在不断修改。如果这一版修订完成,就会在本博客上连载。 《零基础学python》第二版已经放出,敬请各位访问网站:www.itdiffer.com 因为本人精力有限,同时维护两地有难度。并且教程还不稳定,正在不断修改。如果这一版修订完成,就会在本博客上连载。见谅。 第二版的目标是:Fro...

    terro 评论0 收藏0
  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.6

    摘要:请回复这个帖子并注明组织个人信息来申请加入。权限分配灵活,能者居之。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。导航归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 评论0 收藏0

发表评论

0条评论

darryrzhong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<