python学习笔记(一)、列表和元祖
该一系列python学习笔记都是根据《Python基础教程(第3版)》内容所记录整理的
1.通用的序列操作
有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查。另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。
1.1 索引
序列中的所有元素都有编号——从0开始递增,通常我们称这些编号为下标,即为索引(indexing)。你可以像下面这样使用编号来访问各个元素:
str1 = ['java','c++','C','C#','python']
print(str1[0]) ——> java
print(str1[-1]) ——> python
1.2 切片
除了使用索引来访问当个元素外,还可使用切片(slicing)来访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔:
str1 = ['java','c++','C','C#','python']
print(str1[0:4]) ——> ['java','c++','C','C#']
如你所见,切片适用于提取序列的一部分,其中编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号(这跟java的substring有点儿相似)。
1.2.1 绝妙的简写
str1 = ['java','c++','C','C#','python']
print(str[:4]) ——> ['java','c++','C','C#']
print(str[-4:]) ——> ['c++','C','C#','python']
print(str[:]) ——> ['java','c++','C','C#','python']
print(str[-3:0]) ——> []
最后一个print为什么输出为 [] 呢,事实上,当切片的第一个索引指定的元素位于第二个索引指定的元素后面时,返回结果就为 空序列,即 []
1.2.2 更大的步长
在执行切片操作时,你显示或隐示的指定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1,即意味着从一个元素移到下一个元素。
str1 = ['java','c++','C','C#','python']
print(str[::2]) ——> ['java','C','python']
当然,步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。
str1 = ['java','c++','C','C#','python']
print(str[::-1]) ——> ['python','C#','C','c++','java']
1.3 序列相加
可以使用加法运算符来拼接序列。(一般而言,不能拼接不同类型的序列)
str1 = ['java','c++','C']
str2 = ['C#','python']
print(str1 + str2) ——> ['java','c++','C','C#','python']
1.4 乘法
将序列与数 x 相乘时,将重复这个序列 x 次来创建一个新序列。
str1 = [0]
print(str1 * 5) ——> [0,0,0,0,0]
print([None] * 5) ——> [None,None,None,None,None]
None 表示空
1.5 成员资格
要检查特定的值是否包含在序列中,可以使用运算符 in 。包含返回True,不包含时返回False。
str1 = ['java','c++','C','C#','python']
print('java' in str1) ——>True
1.6 长度、最小值和最大值
内置函数len、min和max 很有用,其中函数len返回序列包含的元素个数,而min和max分别返回序列中最小值和最大值的元素。
str1 = ['java','c++','C','C#','python']
print(len(str1)) ——> 5
print(min(str1)) ——> C
print(max(str1)) ——> python
2.列表:Python的主力
2.1 函数list
可将任何序列(如字符串)作为list的参数。list实际上是一个类,而不是函数。
print(list('java')) ——>['j','a','v','a']
提示:要将字符列表转为字符串,可使用 ''.join(somelist)
2.2 基本的列表操作
可以对列表执行所有的标准序列操作,如索引、切片、拼接、相加和相乘。
2.2.1 修改列表:给元素赋值
使用索引表示法给特定位置的元素赋值,如 str1[0] = 'js'
2.2.2 删除元素
使用 del 语句删除元素。
str1 = ['java','c++','C','C#','python']
del str1[0]
print(str1) ——> ['c++','C','C#','python']
2.2.3 给切片赋值
使用切片赋值,可以同时给多个元素赋值,并且可将切片替换为长度与其不同的序列。
str1 = ['java','c++','C','C#','python']
str1[0:1] = ['java','js']
print(str1) ——> ['java','js','c++','C','C#','python']
使用切片赋值还可以在不替换原有元素的情况下 插入 新元素。
str1 = ['java','c++','C','C#','python']
str1[1:1] = ['js']
print(str1) ——> ['java','js','c++','C','C#','python']
还可以进行 删除 元素。
str1 = ['java','c++','C','C#','python']
str1[1:4] = []
print(str1) ——> ['java'