列表的定义
列表由一系列按特定顺序排列的元素组成。可以将任意东西加入列表中,其中的元素之间可以无任何关系。Python是弱类型语言。
一般给列表取复数形式的名字,如names。
用方括号"[]"来表示列表,用逗号分隔其中元素。如:names=['liu','her','his']
访问列表
列表是有序集合。要访问列表元素,可以指出列表的名称,再指出元素的索引,并将其放在方括号内。
而当你获取列表元素时,Python只返回该元素。
如:names=['liu','her','his'] print(names[0])#输出:liu
Python为访问最后一个列表元素提供了一种特殊语法,将索引指定为-1,可让Python返回最后一个列表元素。其也代表从列表的末尾开始计算索引。
如:names=['liu','her','his'] print(names[-1])#输出:his
索引-2返回倒数第二个元素,可以此类推。
使用列表的值
将列表中的元素存入变量进行使用。
修改列表元素
我们要把第二个元素改为’hero’.
`names=['liu','her','his']
print(names[-2])
names[-2]='hero'
print(names[-2])
#输出:her
hero
通过索引确定位置,重新赋值,修改任意位置的值。
添加元素
-
在列表末尾添加:使用方法append()。
names=[] names.append('liu') print(names) #输出:['liu']
-
在列表中插入:使用方法insert()可在列表的任何位置插入元素。
names=[] names.insert(0,'liu') print(names) #输出:['liu']
在这里,方法insert()在索引0处添加空间,并将值’liu’存储到该处。这种操作会对后面的所有既有元素都右移一个位置。就像别人插队,对前面的人不影响,只影响后面的人。
删除元素
1.使用del语句删除已知列表元素位置的元素。
`names=['liu','her','his']
del names[0]`
print(names)#输出:['her','his']
我们删除了第一个元素,这个操作是永久性的。
2.使用方法pop()。方法pop()可删除列表末尾的元素,并可以接着使用它.
names=['liu','her','his']
op_name=names.pop()
print(op_name)
print(names)
#输出:liu
['liu','her']
列表就像一个栈,删除列表末尾的元素相当于弹出栈顶元素。
使用方法pop()也可以删除列表中任何位置的元素,只需要在括号中指出要删除的元素索引。
names=['liu','her']
op=names.pop(-2)
我们弹出了列表的第一个元素。
3.根据值删除。使用方法remove()。
names=['liu','her','his']
name='liu'
names.remove(name)
print(names)
#输出:['her','his']
在这里,将’liu’赋值给变量name,在列表names中删除’liu’的元素,打印出删除后的列表。我们也可以输出我们删除的元素。
组织列表
-
sort()方法对列表进行永久性排序。
names=['liu','his'] names.sort() print(names)#输出:['his','liu']
方法sort()按字母顺序永久性地修改了列表元素排列。如果想要按与字母顺序相反的顺序排列,需要改为sort(reverse=True) -
sorted()函数对列表进行临时性排序。
names=['liu','her','his']
print(names)
print(sorted(names))
print(names)
#输出:['liu','her','his']
['her','his','liu']
['liu','her','his']
第一行输出原始顺序列表,第二行输出临时性列表顺序,第三行输出原始顺序列表。
- 使用方法reverse()倒着打印列表.
names=['liu','her','his']
names.reverse()
print(names)
#输出:['his','her','liu']
此处,是反转列表元素的排列顺序。如果想恢复,只需再次调用该方法即可。
4.使用函数len()可快速获悉列表长度。
names=['liu','her','his']
print(len(names))
#输出:4
遍历整个列表
需要对列表中每个元素执行相同的操作时,都可以使用for循环。
names=['liu','her','his']
for name in names:
print(name)
#输出:liu
her
his
for循环让Python从列表中依次取出一个元素,并将其存储至变量name中,进行输出。
对列表中的每一个元素,都将执行相同的步骤,无论列表中有多少元素。
对于存储列表中每个值的临时变量,可以指定任何名称。
创建数值列表
- 函数range():该函数可以生成一些列的数字。
for value in range(1,5):
print(value)
#输出:1
2
3
4
函数range()让Python从指定的第一个数开始数,并在到达你指定的第二个值后停止,因此输出不包含5.
- 创建数字列表:使用函数list()将range()的结果直接转换成列表。
numbers=list(range(1,5,1))
print(numbers)
#输出:[1,2,3,4]
在这里,有了第三个参数1,代指步长为1.
可以直接使用min(),max(),sum()求最小值、最大值和总和。
列表解析
-
定义:列表解析将for循环和创建新元素的代码合成一行,并自动附加新元素。
-
实例
ns=[n**3 for n in range(1,4)]
print(ns)
#输出:[1,8,27]
首先要指定一个描述性的列表名,如ns。然后,指定一个左方括号,定义一个表达式,用于生成要存储到列表中的值。接着,编写for循环,用于给表达式提供值。最后加上右方括号。
使用部分列表
- 使用切片
切片,可指定要使用的第一个元素和最后一个元素的索引。Python在到达指定的第二个索引前面的元素后停止。
cars=['audi','aw','ker','lop']
print(cars[:3]
#输出:['audi','aw','ker']
输出前三个元素,指定索引0~3.这里,开头没有指定,Python将自动从表的开头开始。末尾没有指定,Python将自动在列表末尾终止。
- 遍历切片
cars=['audi','aw','ker','lop']
for car in cars[:3]:
print(car)
#输出:audi
aw
ker
遍历了前三个元素。
- 复制列表
创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引,即[:].
my_foods=['vegetable','noodless','hotdog','hamburg']
her_foods=my_foods[:]
my_foods.append('my')
her_foods.append('her')
print(my_foods)
print(her_fodds)
#输出:['vegetable','noodless','hotdog','hamburg','my']
['vegetable','noodless','hotdog','hamburg','her']
我们将包含my_foods列表所有元素的切片赋值给了her_foods,这样,两个列表互不干涉。如果简单的将my_foods列表赋值给her_foods,那么,对于一个列表的改动,将会对另一个列表产生影响。
元组
Python将不能修改的值称为不可变的,而不可变的;列表被称为元组。
- 定义元组:元组和列表的区别在于用圆括号标识。
code=(4,5,6)
print(code[0])
#输出:4
在这里,定义了元组code,接着打印该元组的第一个元素4.
修改元组元素是被禁止的,会报错。
- 遍历元组:与遍历列表一样,使用for循环。
- 修改元组变量。
我们无法直接修改元组的元素,但可以通过给存储元组的变量赋值来间接修改。
codes=(4,5,6)
for code in codes:
print(code)
print('\n')
codes(7,8,9)
for code in codes:
print(code)
输出:4
5
6
7
8
9
在这里,首先定义了一个元组codes,并打印所有元素。然后将一个新元组存储到变量codes中,对前面的codes进行了覆盖。这次,不会报错。