《Python编程 从入门到实践》-基础知识总结2

182 阅读5分钟

列表简介

  • 列表元素
  • 修改、添加和删除元素
  • 组织列表
  • enumerate()
列表是什么

列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
#['trek', 'cannondale', 'redline', 'specialized']  输出bicycles的全部内容
访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
# trek
索引从0而不是1开始

第二个列表元素的索引为1。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减1,并将结果作为索引。例如,要访问第四个列表元素,可使用索引3。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[3])
#cannondale
#specialized

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])
#specialized

这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。

修改、添加和删除元素
修改列表元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
#['honda', 'yamaha', 'suzuki']
#['ducati', 'yamaha', 'suzuki']  直接修改motorcycles[0]的元素
在列表中添加元素
  • append()在列表末尾添加元素(动态创建列表)
  • insert()在列表中插入元素
  • extend()插入多个元素

append()末尾添加

motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles) 
#['honda', 'yamaha', 'suzuki']

insert()列表中插入(可在任意位置插入)

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')#在索引0处添加空间
#并将值'ducati'存储到这个地方 其他元素后移
print(motorcycles)
#['ducati', 'honda', 'yamaha', 'suzuki']1

extend()插入多个元素

alist=[]
print(alist)
alist.extend(['woaixiaocao','xiaocaoaiwo'])
print(alist)
#[]
#['520', '1314']
从列表中删除元素
  • del语句删除元素
  • pop()删除元素
  • 弹出列表中任何位置的元素
  • 根据值删除元素

(1)使用del语句删除元素

list = ['a', 'b', 'c']
print(list)
del list[0]#索引值
print(list)
#['a', 'b', 'c']#['b', 'c']

(2)使用方法pop()删除元素 
方法pop()可删除列表末尾的元素,并让你能够接着使用它。列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

list= ['a', 'b', 'c']
print(list)
popped_list = list.pop()
print(list)
print(popped_list)
#['a', 'b', 'c']
#['a', 'b']
#c

(3)弹出列表中任何位置处的元素       

list= ['a', 'b', 'c']
first = list.pop(0)
print(first.title())
#A

(4)根据值删除元素 remove()\

有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法remove()。

它只会删除检索到的第一个值进行删除,后面有相同名字的也不会处理(即删除第一个要删除的元素)

list= ['a', 'b', 'c', 'a']
print(list)
list.remove('a')
print(list)
#['a', 'b', 'c', 'a']
#['b', 'c', 'a']
组织列表
  • 使用方法sort()对列表进行永久性排序
  • 使用函数sorted()对列表进行临时排序
  • 倒着打印列表
  • 确定列表的长度

(1)使用方法sort()对列表进行永久性排序 \

Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。为简化这项任务,我们假设该列表中的所有值都是小写的。

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

方法sort()永久性地修改了列表元素的排列顺序。现在,汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序:

#['audi', 'bmw', 'subaru', 'toyota']

\

你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数 
reverse=True
。下面的示例将汽车列表按与字母顺序相反的顺序排列:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
#['toyota', 'subaru', 'bmw', 'audi']

(2)使用函数sorted()对列表进行临时排序 
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("原始列表:")
print(cars)
print("\n临时排序列表:")
print(sorted(cars))
print("\n原始列表again:")
print(cars)
原始列表:
['bmw', 'audi', 'toyota', 'subaru']

临时排序列表:
['audi', 'bmw', 'subaru', 'toyota']

原始列表again:
['bmw', 'audi', 'toyota', 'subaru']

如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。

(3)倒着打印列表 reverse()
要反转列表元素的排列顺序,可使用方法reverse()。reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序。方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。

cars = ['a', 'b', 'c', 'd']
print(cars)
cars.reverse()
print(cars)cars.reverse()print(cars)
['a', 'b', 'c', 'd']['d', 'c', 'b', 'a']['a', 'b', 'c', 'd']

(4)确定列表的长度 
使用函数len()可快速获悉列表的长度。

list= ['a', 'b', 'c', 'd']
print(len(list))  #4
enumerate()枚举

enumerate(序列,数字(下标数值,默认为0))

alist=['5','2','0','a']
blist=['1','3','1','4']
for i,j in enumerate(alist):
    print(i,j)
for i,j in enumerate(alist):
    for m,n in enumerate(blist):
        if i==m:
            print(j,n)
#输出0 5
1 2
2 0
3 a
5 1
2 3
0 1
a 4