Python第2章复习笔记

在Python中,最基本的数据结构为序列。

2.1 序列概述

Python中内置了多种序列:列表、元组、字符串

列表元组
是否可以修改
适用场合中途需要修改元素的场合禁止修改序列的情形

1、Python支持一种数据结构的基本概念,名为容器。
2、两种主要的容器是序列(如列表和元组)和映射(如字典)。
3、有一种既不是序列也不是映射的容器,它就是集合。

2.2 通用的序列操作

2.2.1 列表初步认识

Lucy = [20220001,'Lucy',19]
Lily = [20220002,'Lily',20]
Tom = [20220003,'Tom',19]
students = [Lucy, Lily, Tom]
print(students)
print(students[0])
print(students[-1])
#运行结果
[[20220001, 'Lucy', 19], [20220002, 'Lily', 20], [20220003, 'Tom', 19]]
[20220001, 'Lucy', 19]
[20220003, 'Tom', 19]

2.2.2 切片

numbers = [0,1,2,3,4,5,6,7,8,9]
numslice1 = numbers[2:6]
numslice2 = numbers[-2:-2]
print(numslice1)
print(numslice2)
#运行结果
[2, 3, 4, 5]
[]
numbers = [0,1,2,3,4,5,6,7,8,9]
print(numbers[0:10:1])
print(numbers[0:10:2])
#运行结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]

注:索引可正可负,步长可正可负。
执行切片操作时,如果第一个索引指定的元素位于第二个索引指定的元素后面,结果就为空序列。

练习:从类似于http://www.something.com的URL中提取域名

str = 'http://www.something.com'
print(str[11:-4])
#运行结果
something

2.2.3 序列相加

1、可使用加法运算符来拼接序列
2、不能拼接列表和字符串,虽然它们都是序列。一般而言,不能拼接不同类型的序列

print([1,2,3]+[4,5,6])
print('Hello,'+'world!')
print([1,2,3]+'world!')
#运行结果
[1, 2, 3, 4, 5, 6]
Hello,world!
TypeError: can only concatenate list (not "str") to list

2.2.4 序列乘法

将序数与数x相乘时,将重复这个序列x次来创建一个新序列

print('python'*5)
print([42]*10)
#运行结果
pythonpythonpythonpythonpython
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

空列表:使用不包含任何内容的两个方括号([])表示。

2.2.5 成员资格

要检查特定的值是否包含在序列中,可使用运算符in。 它检查是否满足指定的条件,并返回相应的值:满足时返回True,不满足时返回False 。

str1 = 'HelloPython'
flag1 = 'llop' in str1
print(flag1)
nums = [0,2,4,6,8]
flag2 = 6 in nums
print(flag2)
#运行结果
False
True

2.3 列表

2.3.1 函数list

print(list('Hello'))
#运行结果
['H', 'e', 'l', 'l', 'o']

1、可将任何序列(而不仅仅是字符串)作为list的参数
2、要将字符列表转换为字符串,可用表达式:.join(somelist),其中somelist是要转换的列表

2.3.2 基本的列表操作

可对列表执行所有的标准序列操作,如索引、切片、拼接和相乘,但列表的有趣之处在于它是可以修改的。
1、修改列表:给元素赋值
2、删除元素del
3、给切片赋值
(1)通过切片赋值,可将切片替换为长度与其不同的序列

name = list('Perl') 
name[1:] = list('ython') 
print(name)
#运行结果
['P', 'y', 't', 'h', 'o', 'n']

(2)通过切片赋值,可在不替换原有元素的情况下插入新元素

numbers = [1, 5] 
numbers[1:1] = [2, 3, 4] 
print(numbers)
#运行结果
[1, 2, 3, 4, 5]

(3)通过切片赋值,可以删除元素

numbers = [1,2,3,4,5] 
numbers[1:4] = []
print(numbers)
#运行结果
[1, 5]

2.3.3 列表方法

方法是与对象(列表、数、字符串等)联系紧密的函数。通常,像下面这样调用方法:
object.method(arguments)

1、append
方法append将一个对象附加到列表末尾
就地直接修改旧列表,不会返回修改后的新列表

2、clear
就地清空列表的内容

3、copy
复制列表
注意区分与deepcopy()的区别

4、count
计算指定的元素在列表中出现多少次

5、extend
可以同时将多个值附加到列表末尾。可使用一个列表来扩展另一个列表

6、index
在列表中查找指定值第一次出现的索引
当搜索内容不在列表中,会发生异常

7、insert
用于将一个对象插入列表

8、pop
从列表中删除一个元素,并返回这一个元素

9、remove
用于删除第一个为指定值的元素
就地删除且没有返回值

10、reverse
按相反的顺序排列列表中的元素
没有返回值
注:如果想按相反的顺序迭代序列,可使用函数reversed。这个函数不返回列表,而是返回迭代器。可使用list将返回的对象转换为列表

11、sort
用于对列表就地排序。就地排序意味着对原来的列表进行修改,使其元素按顺序排列,而不是返回排序后的列表的副本
注:为获取排序后的列表的副本,另一种方法是使用函数sorted

12、高级排序
方法sort接受两个可选参数:key和reverse
要根据长度对元素进行排序,可将参数key设置为函数len
对于另一个关键字参数reverse,只需将其指定为一个真值(True或False),以指出是否要按相反的顺序对列表进行排序

2.4 元组:不可修改的序列

1、元组也是序列,唯一的差别在于元组是不能修改。元组语法很简单,只要将一些值用逗号分隔,并用圆括号括起(这是通常采用的做法)。
2、空元组用两个不包含任何内容的圆括号表示
3、如何表示只包含一个值的元组呢? 虽然只有一个值,也必须在它后面加上逗号
4、函数tuple的工作原理与list很像:它将一个序列作为参数,并将其转换为元组。如果参数已经是元组,就原封不动地返回它。

2.5 小结

1、序列:序列是一种数据结构,其中的元素带编号(编号从0开始)。
2、列表、字符串和元组都属于序列
(1)其中列表是可变的
(2)而元组和字符串是不可变的(一旦创建,内容就是固定的)。
(3)要访问序列的一部分,可使用切片操作:提供两个指定切片起始和结束位置的索引。
(4)要修改列表,可给其元素赋值,也可使用赋值语句给切片赋值。
3、成员资格:要确定特定的值是否包含在序列(或其他容器)中,可使用运算符in。将运算符in用于字符串时情况比较特殊——这样可查找子串。
4、方法:一些内置类型(如列表和字符串,但不包括元组)提供了很多有用的方法。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The square of H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值