本文使用的书籍是《Python编程:从入门到实践》
本文使用的是Python3.6
一、列表是什么
列表是由一系列按特定顺序排列的元素组成。
在Python中,列表用符号[ ]来表示,里面的元素用逗号隔开,下面我们用代码来试试看:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
如果你打印出来,你会看到Python打印列表时,会打印出列表的内部表示,包括方括号。
所以在列表这一章中,我们首先要学会如何访问列表元素,像大部分编程语言一样,利用元素的索引进行访问,下面我们用代码来试试看:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print("第一个元素是:" + bicycles[0])
print("第三个元素是:" + bicycles[2])
这样,我们就不会打印出方括号了,结果干净简洁。
同时,我们也可以看出,列表的索引是从0开始,而不是1,事实上,大部分编程语言都是这样的。
在Python中,还有一些特殊的语法,你的索引打成-3的话,打印出来的结果是列表的倒数第三个元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print("倒数第三个元素是:" + bicycles[-3])
并且,列表中的值也可以赋给变量,我们用书中的例子来试一下:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
列表是什么一节的动手试一试:
# 3-1
names = ['小明', '小强', '老王']
print(names[0])
print(names[1])
print(names[2])
二、修改、添加和删除元素
1. 修改列表元素
修改列表的语法与访问列表元素类似,用索引指定元素的位置,对值进行修改。
我们用代码来试试:
names = ['小明', '小强', '老王']
print(names)
names[1] = '小红'
print(names)
2. 在列表中添加元素
添加元素的方法有几种如下:
A:在列表的末尾添加元素,使用方法append()来进行添加,代码如下:
names = ['小明', '小强', '老王']
print(names)
names.append('小红')
print(names)
name = '小兰'
names.append(name)
print(names)
B:在列表中插入元素,使用方法insert()来进行插入,代码如下:
names = ['小明', '小强', '老王']
print(names)
names.insert(1, '小红')
print(names)
name = '小兰'
names.insert(0, name)
print(names)
可以看出,方法insert()在索引处添加空间,将值储存到这个地方,这种操作将列表中机油的每个元素都右移一个位置。
3. 从列表中删除元素:
这里面又有几种方法,如下:
A: 使用del语句删除元素,这种方法主要是从索引入手:
names = ['小明', '小强', '老王']
print(names)
del names[1]
print(names)
B: 使用方法pop()删除元素,这个方法为术语弹出(pop),主要用于栈,删除列表末尾元素相当于弹出栈顶元素。
普通访问就是把元素拿出来用,用完放回去;而pop()是把列表末尾元素拿出来用,然后不放回去,自然列表就没有这个元素了,看个例子吧。
names = ['小明', '小强', '老王']
print("列表原来是这样的:" + names)
name = names.pop()
print("列表现在是这样的:" + names + "\n弹出的元素是:" + name)
name = names.pop()
print("列表最后是这样的:" + names + "\n弹出的元素是:" + name)
C: 弹出列表中任何位置处的元素
在Python中你可以用pop()来删除列表中任意位置的元素,只需要加上索引即可,但是在栈中没有这样的语法。
names = ['小明', '小强', '老王']
print("列表原来是这样的:" + names)
name = names.pop(1)
print("列表现在是这样的:" + names + "\n弹出的元素是:" + name)
name = names.pop(0)
print("列表最后是这样的:" + names + "\n弹出的元素是:" + name)
D: 根据值删除元素
在Python中,你可以用remove()来删除元素,这个方法主要是你要知道删除元素的值,才能进行删除。
names = ['小明', '小强', '老王']
print(names)
names.remove('小明')
print(names)
name = '小强'
names.remove(name)
print(names)
修改、添加和删除元素一节的动手试一试:
# 3-4
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你就不要来了")
# 3-5
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你就不要来了")
print(names[1] + "病了,来不了,咱们叫小红吧")
names[1] = '小红'
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你还是不要来了")
# 3-6
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你就不要来了")
print("桌子变大了,叫多点人吧")
names.insert(0, '小红')
names.insert(2, '小兰')
names.append('小王')
# 偷个懒 新手模仿上面的就行
for index in len(names):
print(names[index] + ",来吃饭啊")
# 3-7
# 3-6 的程序 复制过来
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你就不要来了")
print("桌子变大了,叫多点人吧")
names.insert(0, '小红')
names.insert(2, '小兰')
names.append('小王')
# 偷个懒 新手模仿上面的就行
for index in len(names):
print(names[index] + ",来吃饭啊")
print("惨啊,桌子太贵。。。要不叫少点人,让他们回家吧")
name = names.pop()
print(name + "啊,抱歉,没经费,下次再请你。")
name = names.pop()
print(name + "啊,抱歉,没经费,下次再请你。")
name = names.pop()
print(name + "啊,抱歉,没经费,下次再请你。")
name = names.pop()
print(name + "啊,抱歉,没经费,下次再请你。")
print(names[0] + ",来吃饭啊!")
print(names[1] + ",来吃饭啊!")
del names[0]
del names[1]
print(names)
三、组织列表
使用列表自带的排序方法,他会按照默认的排序规律进行排序。
1. 使用sort()对列表进行永久性排序,sort()方法会对列表进行修改,导致永久性的变化:
number = [1, 3, 8, 4, 6, 2]
number.sort()
print(number)
2. 使用函数sorted()对列表进行临时排序,sorted()函数不会修改列表:
number = [1, 3, 8, 4, 6, 2]
print(sorted(number))
print(number)
3. 倒着打印列表,使用reverse()方法,这个方法不会排序:
number = [1, 3, 8, 4, 6, 2]
print(cars.reverse())
4. 确定列表的长度使用len()函数:
number = [1, 3, 8, 4, 6, 2]
print(len(number))
组织列表一节的动手试一试:
# 3-8
cities = ['Shanghai', 'Beijing', 'Guangzhou', 'Chongqing']
print("原始数据:" + cities)
print("排序后数据:" + sorted(cities))
print("排序后在倒着打印的数据:" + sorted(cities).reverse())
print("原始数据:" + cities)
print("倒着打印并修改数据:" + cities.reserve())
print("核实已经被修改的数据:" + cities)
print("再次倒着打印并修改数据:" + cities.reserve())
print("变回原始数据的数据:" + cities)
print("排序并修改数据:" + cities.sort())
print("核实已经被修改的数据::" + cities)
print("排序后倒序并修改数据:" + cities.sort().reverse())
print("核实已经被修改的数据::" + cities)
# 3-9
names = ['小明', '小强', '老王']
print(names[0] + ",来吃饭啊")
print(names[1] + ",来吃饭啊")
print(names[2] + ",……你就不要来了")
print("一共有" + len(names) + "个人来吃饭")
# 3-10
# 先创建一个列表
food = ['红烧肉', '红烧排骨', '可乐鸡翅', '糖醋排骨', '水煮鱼']
# 打印一下
print(food[0]\tfood[1]\tfood[2]\tfood[3]\tfood[4])
# 添加元素
food.append('凉拌黑木耳')
food.append('鱼香肉丝')
food.insert(0, '水煮肉片')
food.insert(3, '意大利面')
print(food[0]\tfood[1]\tfood[2]\tfood[3]\tfood[4])
print(food[5]\tfood[6]\tfood[7]\tfood[8])
# 修改元素
food[0] = '麻辣小龙虾'
print(food[0]\tfood[1]\tfood[2]\tfood[3]\tfood[4])
print(food[5]\tfood[6]\tfood[7]\tfood[8])
# 删除元素
del food[-2]
print(food[0]\tfood[1]\tfood[2]\tfood[3]\tfood[4])
print(food[5]\tfood[6]\tfood[7]\tfood[8])
food.pop(1)
print(food[0]\tfood[1]\tfood[2]\tfood[3]\tfood[4])
print(food[5]\tfood[6]\tfood[7]\tfood[8])
# 排序
print(sorted(food))
print(food)
print(sort(food))
print(food)
print(food.reverse())
print(len(food))
四、使用列表时避免索引错误
主要是要注意列表的大小,要是列表只有五个元素,你访问第六个元素就会出错。
直接动手试一试吧:
# 3-11
number = [1, 2, 3, 4]
# 这是经常会出错的
print(len(number))
好了,那么这章就结束了。