1 列表
列表由一系列安特定顺序排列的元素组成。
其中的元素之间可以没有任何关系,鉴于列表通常包含多个元素,可以给列表指定一个表示复数的名称(letters、names)。
在Python中,用([ ])来表示列表,并用逗号分隔其中的元素。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
[Finished in 1.1s]
1.1 访问列表元素
列表是有序集合,可以通过该元素的位置或索引来访问元素
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles[0])
-------------------------------------------------------------------------------------
trek
[Finished in 0.2s]
1.2 索引是从0开始而不是1开始
在python中,第一个列表元素的索引是0,而不是1,在大多数编程语言中都是如此,这与列表操作的底层实现有关。
第二个列表元素的索引为1,要访问列表的任何元素,可以将位置减一,并将结果作为索引。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles[1])
print(bicycles[3])
-------------------------------------------------------------------------------------
cannonda
specialized
[Finished in 0.2s]
访问最后一个元素,通过将索引指定为-1,可以让python返回最后一个列表元素。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles[-1])
-------------------------------------------------------------------------------------
specialized
[Finished in 0.3s
这种预发适合在不知道列表长度的情况下访问最后的元素,这种约定也适用于其他复数索引,例如,索引-2返回倒数第二个列表元素。
1.3 使用列表的各个值
可以像使用其他变量一样使用列表中的各个值。
bicycles = ['trek','cannonda','redline','specialized']
message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
-------------------------------------------------------------------------------------
My first bicycle was a Trek.
[Finished in 0.2s]
1.4 修改、添加、删除元素
a、修改列表元素
修改列表元素,可指定列表名和要修改的元素索引,在指定该元素的新值。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
bicycles[0] = 'yongjiu'
print(bicycles)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['yongjiu', 'cannonda', 'redline', 'specialized']
[Finished in 0.2s]
可以修改任何列表元素的值。
b、在列表中添加元素
b1.在列表末尾添加元素
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
bicycles.append('yongjiu')
print(bicycles)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['trek', 'cannonda', 'redline', 'specialized', 'yongjiu']
[Finished in 0.2s]
append()方法将新的元素,添加到列表末尾。
b2.在列表中插入元素
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
bicycles.insert(2,'yongjiu')
print(bicycles)
['trek', 'cannonda', 'redline', 'specialized']
['trek', 'cannonda', 'yongjiu', 'redline', 'specialized']
[Finished in 0.2s]
intsert()方法可在列表的任何位置添加新的元素,需指定索引和值,既有的每个元素都向右移一个位置。
1.5 从列表中删除元素
可以根据位置或值来删除列表中的元素。
a、使用del语句删除元素
知道删除元素在列表中的位置,可以使用del语句。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
del bicycles[1]
print(bicycles)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['trek', 'redline', 'specialized']
[Finished in 0.2s]
使用del语句存列表中删除后,就无法再访问它了。
b、使用方法pop()删除元素
方法pop()课删除列表末尾的元素,并且让你能够接着使用它。属于弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
poped_bicycle = bicycles.pop()
print(bicycles)
print(poped_bicycle)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['trek', 'cannonda', 'redline']
specialized
[Finished in 0.2s]
c、弹出列表中任何位置的元素
可以使用pop来删除列表中任何位置的元素,只需要在括号中指定要删除的元素索引即可。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
poped_bicycle = bicycles.pop(0)
print(bicycles)
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['cannonda', 'redline', 'specialized']
[Finished in 0.2s]
如果从列表中删除一个元素,切不在以任何方式使用它,使用del语句;如果要在删除元素后还能继续使用它,就是用方法pop().
d、根据值删除元素
如果只知道要删除的元素的值,可使用remove()。
bicycles = ['trek','cannonda','redline','specialized']
print(bicycles)
too_expensive = 'redline'
bicycles.remove(too_expensive)
print(bicycles)
print("I don't like " + too_expensive.title() + ".")
-------------------------------------------------------------------------------------
['trek', 'cannonda', 'redline', 'specialized']
['trek', 'cannonda', 'specialized']
I don't like Redline.
[Finished in 0.2s]
使用remove()从列表中删除元素时,也可以接着使用它的值。
注意:方法remove()只删除第一个指定的值。如果要删除的值在列表中有多个,需要使用循环。
1.6 组织列表
python提供多种组织列表排序的方式。
a、使用方法sort()对列表进行永久性排序
cars = ['bmw','audi','toyota','subaru']
cars.sort()
-------------------------------------------------------------------------------------
['audi', 'bmw', 'subaru', 'toyota']
[Finished in 1.3s]
方法sort()永久性地修改列表元素,按字母顺序进行了排序
向sort()方法传入参数reverse=True,按与字母顺序相反的顺序进行排列列表元素。
cars = ['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print(cars)
-------------------------------------------------------------------------------------
['toyota', 'subaru', 'bmw', 'audi']
[Finished in 0.2s]
b、使用函数sorted()对列表进行临时排序
sorted()函数可以按特定顺序显示列表元素,同事不影响他们在列表中的原始排列顺序。
cars = ['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print("Here is the original list")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
-------------------------------------------------------------------------------------
Here is the original list
['toyota', 'subaru', 'bmw', 'audi']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['toyota', 'subaru', 'bmw', 'audi']
[Finished in 0.2s]
调用函数sorted()后,列表元素的排列顺序并没有变。如果按照字母顺序相反的顺序显示列表,也可以向函数sorted()传递参数reverse=True。
cars = ['audi', 'bmw', 'toyota','subaru']
print("Here is the original list")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars,reverse=True))
print("\nHere is the original list again:")
print(cars)
-------------------------------------------------------------------------------------
Here is the original list
['audi', 'bmw', 'toyota', 'subaru']
Here is the sorted list:
['toyota', 'subaru', 'bmw', 'audi']
Here is the original list again:
['audi', 'bmw', 'toyota', 'subaru']
[Finished in 0.2s]
c、倒着打印列表
reverse()方法反转列表元素的排列顺序。
cars = ['audi', 'bmw', 'toyota','subaru']
print(cars)
cars.reverse()
print(cars)
-------------------------------------------------------------------------------------
['audi', 'bmw', 'toyota', 'subaru']
['subaru', 'toyota', 'bmw', 'audi']
[Finished in 0.2s]
方法reverse()永久性的修改列表元素的排列顺序,但可以随时恢复到原来的排列顺序,只需要再次调用reverse()即可。
d、确定列表的长度
len()函数可以快速获悉列表的长度。
cars = ['audi', 'bmw', 'toyota','subaru']
print(len(cars))
-------------------------------------------------------------------------------------
4
[Finished in 0.2s]
1.7 使用列表是避免索引错误
cars = ['audi', 'bmw', 'toyota','subaru']
print(cars[4])
-------------------------------------------------------------------------------------
Traceback (most recent call last):
File "E:\Python\homework\text_file\pythhonStudy.py", line 2, in
print(cars[4])
IndexError: list index out of range
[Finished in 0.2s with exit code 1]
索引错误意味着python无法正确的理解指定的索引。