python基础语法(5)
一、列表和元组
1.1 基本概念
Python中的列表和元组可以用一变量表示很多个数据,类似其他编程语言中的“数组”。
列表和元组大部分功能相同。区别在于,列表是可变的,创建之后随时可以改;而元组是不可变的,创建之后不能改,只能丢弃旧的,创建新的。
1.2 创建列表
第一种方式,直接使用字面值来创建。第二种方式,使用list()来创建。

创建列表的时候,可以在[ ]中指定列表的初始值,元素之间用逗号分隔。

C++/Java里面要求一个数组里只能存相同类型的变量,Python里的列表则没有限制,放什么类型都可以。

1.3 访问下标
把[ ]放在一个列表变量的后面,同时[ ]写上一个整数,此时它就是下标访问运算符。[ ]中间的这个整数,就称为“下标”或者“索引”

注意,Python列表中的下标是从0开始计数的。
可以用下标来修改列表的元素。

当下标超出有效范围的时候,尝试访问,就会出现异常。

可以使用内建函数len来获取列表的长度(元素个数),和字符串类似。

len的参数可以传字符串、列表、元组、字典、自定义的类,而这背后的原理正是python的动态类型。
Python中的下标还可以写成负的。如果写成-n,等价于len(a)-n(也就是倒数第n个元素)。
1.4 切片操作
通过下标操作是一次取出里面的一个元素。通过切片,则是一次取出一组连续的元素,相当于得到一个子列表。使用[:]的方式进行切片操作。:左右两侧的数表示一个前闭后开区间。
使用切片的时候,可以省略边界。省略后边界,意思是从开始位置取到整个列表结束。省略前边界意思是从列表0号元素开始取到后边界。前后边界都省略,得到的还是列表自身。切片中的下标也可以是负数。
切片操作还可以指定“步长”。多加一个:,后面再多加一个数,这个数就是步长。

步长的数值可以是负数,意思是从后往前取元素。

当切片中的范围超出有效下标之后,不会出现异常,而是会尽可能把符合要求的元素获取到。
1.5 列表的遍历操作
遍历指的是把一个列表中的每个元素都依次取出来并进行某种操作。列表本身就是一个可迭代对象,可以直接用for循环进行遍历。

也可以通过下标的方式,使用for循环遍历。

下面示例代码中的第一段代码,只是把elem的值给改了,并没有影响到列表。第二种写法才真正修改了列表中元素的值。

我们也可以用while循环,通过下标遍历列表。

综上,我们如果只是想要获取列表每个元素的值,直接使用第一种方法最为简便。如果想要修改列表元素的值,就要通过下标来访问了。
1.6 列表的插入操作
可以使用append往列表末尾新增一个元素。

此处的append是搭配列表对象a来一起使用的,而不是作为一个单独的函数使用。
type, print, input, len, 自定义函数这些,都是独立函数。
像append这种要搭配对象来使用的函数,也叫做“方法(method)”。
在Python中,“对象”就可以视为是“变量”
还可以使用insert方法往列表的任意位置新增元素。

如果插入的位置超出了列表下标的有效范围,会把元素插入在列表的末尾。
1.8 列表的查找和删除
可以用in或者not in来判断某个元素是否在列表中。

可以使用index方法判定当前元素在列表中的位置,得到一个下标。
如果要找的元素不存在,会直接抛出异常。
使用pop可以删除列表中最末尾的元素或任意位置的元素。

使用remove方法可以按照值来进行删除,这个方法只会删除第一个值为指定值的元素,后面的不动。

1.9 连接列表
可以使用“+”对两个列表进行拼接。

使用+拼接列表时,只是针对当前列表内容进行生成了一个更大的列表,原有列表的内容是不变的。
而使用extend来拼接则是把后一个列表的内容彬姐到前一个列表里面。extend方法没有返回值。
(None是一个特殊的变量的值,表示什么都没有)

还可以使用+=来进行拼接,效果与extend相同,但执行过程是不同:+=实际是创建了一个更大的列表,把更大的列表中的值赋给a,然后释放了a的旧值。

1.10 元组的操作
创建元组有两种方式:

创建元组的时候,也可以指定初始值,元组中的元素也可以是任意类型的。
也可以通过下标来访问元组中的元素,下标也是从0开始,到 len - 1 结束。
下标也可以是负数,与列表类似。
同样可以通过切片来获取元组中的一个部分。
也可以通过for循环等方式来遍历元素。
也可以使用+拼接
# 创建时可以制定初始值,元素可以为任意类型
a = (1,2,3,4)
b = (1,True,'world')
print(a)
print(b)
#用下标访问
print(a[2])
print(a[-1])
# 切片
print(a[1:3])
# 遍历
for elem in a:
print(elem)
# 用 in 判断元素是否在列表中,用index获取元素下标
print(3 in a)
print(a.index(3))
# 使用+拼接两个元组
a = (1,2,3)
b = (4,5,6)
print(a + b)
但是元组只支持“读”的操作,如果尝试修改元组中的值,会报错。

当进行多元赋值时,本质是按照元组的方式来工作的。

元组的作用在于:在协同开发的时候,为了避免程序员A传的参数在程序员B写的函数内部被修改,可以传元组作为参数,这样可以降低沟通成本。
以及,像元组这样的不可变对象,是可以哈希的。
END
更多推荐



所有评论(0)