文章目录
列表
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。如下:
name = ['Bob', 'Libai']
print(name)
如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号:
['Bob', 'Libai']
1、访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。如下:
name = ['Bob', 'Libai']
print(name[0])
请求获取列表元素时,Python只返回该元素,而不包括方括号和引号:
Bob
注意:索引从0开始而不是从1开始,如上的Bob的索引为0。
Python提供了一种特殊语法,可以访问列表的倒数第i个元素,只要令索引为-i就可以了,如下:
name = ['Bob', 'Libai']
print(name[-2])
输出结果为倒数第二个元素,即
Bob
2、修改、添加和删除元素
大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素。
2.1、修改列表元素
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。
province = ['hunan', 'beijing', 'shanghai']
print(province)
province[0] = 'tianjin'
print(province)
首先定义一个省份列表,第一个元素为“hunan”,接下来将其改为“tianjin”,输出表明,第一个元素值变了,其他列表元素未变。
['hunan', 'beijing', 'shanghai']
['tianjin', 'beijing', 'shanghai']
2.2、在列表添加元素
方法append()可以在列表末尾添加一个元素,而方法insert()可以在列表的任意位置插入元素:
province = ['tianjin', 'beijing', 'shanghai']
print(province)
province.append('guangzhou')
print(province)
province.insert(1, 'hainan')
print(province)
输出可以看出,方法append()将“guangzhou”添加到末尾而不影响其他元素,而方法insert()将“hainan”插入到索引为1的位置,
['tianjin', 'beijing', 'shanghai']
['tianjin', 'beijing', 'shanghai', 'guangzhou']
['tianjin', 'hainan', 'beijing', 'shanghai', 'guangzhou']
2.3、从列表删除元素
2.3.1、del语句和pop()方法
del语句可以删除任意位置的元素。方法pop()可以删除列表末尾的元素,并让你能够接着使用它,pop()也可以删除任意位置的元素,只要提供索引就可以了。如下:
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
print(province)
del province[1]
print(province)
e = province.pop()
print(e)
print(province)
e = province.pop(0)
print(e)
print(province)
del语句删除了索引1对应的元素“beijing”,方法pop()则删除了最后一个元素并将元素值返回,而pop(0)则删除了第一个元素并返回元素值,输出如下:
['tianjin', 'beijing', 'guangzhou', 'shanghai']
['tianjin', 'guangzhou', 'shanghai']
shanghai
['tianjin', 'guangzhou']
tianjin
['guangzhou']
2.3.2、根据值删除元素
如果你只知道要删除的元素的值,可使用方法remove()。
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
print(province)
province.remove('beijing')
print(province)
3、组织列表
3.1、sort()对永久性排序
方法sort()永久性修改了列表元素的排列顺序,在括号中添加参数reverse=True可以按字母顺序相反排序。
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
province.sort()
print(province)
province.sort(reverse=True)
print(province)
两种排序均是对列表province的永久性修改。输出如下:
['beijing', 'guangzhou', 'shanghai', 'tianjin']
['tianjin', 'shanghai', 'guangzhou', 'beijing']
3.2、使用函数sorted()对列表临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted() 。函数sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
print("Here is the original list:")
print(province)
print("\nHere is the sorted list:")
print(sorted(province))
print("\nHere is the original list again:")
print(province)
sorted()函数以原列表为参数,并返回一个经过排序的列表,而不对province列表的存储值进行修改,所以province的值没有变化。
Here is the original list:
['tianjin', 'beijing', 'guangzhou', 'shanghai']
Here is the sorted list:
['beijing', 'guangzhou', 'shanghai', 'tianjin']
Here is the original list again:
['tianjin', 'beijing', 'guangzhou', 'shanghai']
3.3、使列表倒序
要反转列表元素的排列顺序,可使用方法reverse() 。
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
print(province)
province.reverse()
print(province)
方法reverse()也永久性改变了列表的值:
['tianjin', 'beijing', 'guangzhou', 'shanghai']
['shanghai', 'guangzhou', 'beijing', 'tianjin']
3.4、确定列表长度
使用函数len()可快速获悉列表的长度。
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
length = len(province)
print('列表长度为:' + str(length))
len()函数以列表为参数,并返回列表的长度,赋值给了length,输出如下:
列表长度为:4
4、使用列表时要避免索引错误
刚开始使用列表时,经常会遇到一种错误。假设你有一个包含四个元素的列表,却要求获取第五个元素,即索引为4的元素(索引从0开始):
province = ['tianjin', 'beijing', 'guangzhou', 'shanghai']
print(province[4])
这将导致索引错误
Traceback (most recent call last):
File "E:/project/Pycharm/python_study/main.py", line 2, in <module>
print(province[4])
IndexError: list index out of range