Python基础:操作list以及tuple的引入
又是一篇臭长臭长的....下次尽量拆开来写吧 # 遍历整个列表 在C语言中,我们如何实现“遍历”这一操作呢?答案显而易见,使用循环。在Python中同理,我们要对列表中的每一个元素进行操作,那么就需要遍历整个list,而要遍历整个list,循环语句是不可缺少的。 ## 1. 循环 还是以那些我买不起的自行车品牌为例,假如现在我需要把列表bicycles
中的所有元素一一打印出来,需要怎么操作呢? 1
2
3
4bicycles = ['trek','specialized','giant','santa cruz']
for bicycle in bicycles:
print(bicycle)bicycles
- 紧接着定义一个for
语句,这行代码让Python从列表bicycles
中取出一个元素(这里是自行车品牌),并将其存储在变量bicycle
中 - 最后,让python打印前面储存在变量bicycle
中的变量即可
输出结果: 1
2
3
4trek
specialized
giant
santa cruzfor
语句循环地执行,直到列表中的元素全部被执行过为止。 但这里有一个细节令人注意:为什么第四行代码print
语句前会有一个缩进? ## 2. 缩进 用过Word系列办公工具的同学可能知道缩进,在电脑上敲出缩进的方法通常为:在编辑过程中按下键盘上的tab
键。那么缩进在Python中是做什么的,有什么意义呢? Python是根据缩进来判断代码行与前一个代码行的关系的,如果一行代码前有缩进,那么意味着这行代码被包含于上一个没有缩进的代码行中。看起来有点不好理解,下面来演示一下这到底是什么意思。 ### a. 在for
循环中执行更多操作 有的时候,我们不仅想要打印出列表中的内容,还想在此基础上增加一句别的内容,如何处理呢? 1
2
3
4
5bicycles = ['trek','specialized','giant','santa cruz']
for bicycle in bicycles:
print('The ' + bicycle.title() + ' bicycle is so great!')
print("I can't wait to buy a " + bicycle.title() +' bike')1
2
3
4
5
6
7
8The Trek bicycle is so great!
I can't wait to buy a Trek bike
The Specialized bicycle is so great!
I can't wait to buy a Specialized bike
The Giant bicycle is so great!
I can't wait to buy a Giant bike
The Santa Cruz bicycle is so great!
I can't wait to buy a Santa Cruz bikefor
语句后的两个print
前都使用了相同的缩进,意味着这两个print
语句都被包含于同一个for
语句下 ### b. 在for
循环后执行更多操作 如果我并不想在每一次循环中都输出,而只想在最后一次循环后输出怎么办呢? 1
2
3
4
5bicycles = ['trek','specialized','giant','santa cruz']
for bicycle in bicycles:
print('The ' + bicycle.title() + ' bicycle is so great!')
print("I can't wait to buy a " + bicycle.title() +' bike')print
语句前并没有缩进,因而不会被包含在循环语句中,所以,只有当循环语句执行完毕之后才会进入第二个print
语句中。 输出结果: 1
2
3
4
5The Trek bicycle is so great!
The Specialized bicycle is so great!
The Giant bicycle is so great!
The Santa Cruz bicycle is so great!
I can't wait to buy a Santa Cruz bikerange()
函数的用法 Python的自带函数range()可以轻松的生成一段数字列表,它的语法如下:
start1
2
3
4#range(start, stop[, step])
#单参数时:
for value in range(5):
print(value)1
2
3
4
50
1
2
3
4为
0,传入的参数为结束点,步进值默认为
1
start1
2
3
4#range(start, stop[, step])
#双参数时:
for value in range(1,5):
print(value)1
2
3
41
2
3
4和终点
stop,步进值同样默认为
1
start1
2
3
4#range(start, stop[, step])
#三参数时:
for value in range(1,5,2):
print(value)1
21
3、终点
stop和步进值
step### 创建数字列表 明白了
range()的用法后,创建数字列表的方法好像呼之欲出了,但还是少了点什么。在Python中,有一类函数地作用是将数据类型转换,比如
int()是将传入的参数转换为
int型数据。那么是不是可以用同样形式的
list()来生成列表型数据呢?当然可以:
**1
2numbers = list(range(1,6))
print(numbers)1
[1, 2, 3, 4, 5]
1
2
3
4squares = []
for square in range(1,11):
squares.append(square**2)
print(squares)指的是平方运算,这几行代码的输出结果为:
01
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
1
2
3
4statistics = [1,2,4,9,12,435,1,23,34,123,45645,2312,35,123,675,345,23434,45]
print('最大值为' + str(max(statistics)))
print('最小值为' + str(min(statistics)))
print('总和为' + str(sum(statistics)))1
2
3最大值为45645
最小值为1
总和为732581
2bicycles = ['giant','trek','specialized','santa cruz','cannondale']
print(bicycles[0:3])1
['giant', 'trek', 'specialized']
而非
1;如果想终止于第4个元素,那么第二个参数就是
4如果参数不填的话,索引的第一个参数默认为
0,第二个值默认为列表中元素的个数 同样,与列表的索引方式相同,也可以用负索引号来完成切片:
for1
2
3
4bicycles = ['giant','trek','specialized','santa cruz','cannondale']
print(bicycles[:3])
print(bicycles[2:])
print(bicycles[-3:3])1
2
3['giant', 'trek', 'specialized']
['specialized', 'santa cruz', 'cannondale']
['specialized']循环中使用切片:
[:]1
2
3bicycles = ['giant','trek','specialized','santa cruz','cannondale']
for bicycle in bicycles[1:4]:
print(bicycle.title())1
2
3Trek
Specialized
Santa Cruz。这样就可以创建一个始于第一个元素,终于最后一个元素的列表。
list1 = list21
2
3
4bicycles = ['giant','trek','specialized','santa cruz','cannondale']
my_bicycles = bicycles[:]
print(my_bicycles)1
['giant', 'trek', 'specialized', 'santa cruz', 'cannondale']
不好嘛? 确实,这样确实可以得到相同的列表,但是这步操作并不是我们想要的"复制",而仅仅是更换了列表的变量名,什么意思呢?看下面的操作就明白了:
specialized1
2
3
4
5
6
7
8bicycles = ['giant','trek','specialized','santa cruz','cannondale']
my_bicycles = bicycles
bicycles.append('specialized')
my_bicycles.append('polygon')
print(bicycles)
print(my_bicycles)1
2['giant', 'trek', 'specialized', 'santa cruz', 'cannondale', 'specialized', 'polygon']
['giant', 'trek', 'specialized', 'santa cruz', 'cannondale', 'specialized', 'polygon'],另一个增加了
polygon,但是输出的结果却是一样的,这是因为直接粗暴地
list1 = list2只是更换了变量名,无论如何操作都只操作同一个list。而用切片的方法才能在真正意义上新建一个相同列表:
tuple1
2
3
4
5
6
7
8bicycles = ['giant','trek','specialized','santa cruz','cannondale']
my_bicycles = bicycles[:]
bicycles.append('specialized')
my_bicycles.append('polygon')
print(bicycles)
print(my_bicycles)1
2['giant', 'trek', 'specialized', 'santa cruz', 'cannondale', 'specialized']
['giant', 'trek', 'specialized', 'santa cruz', 'cannondale', 'polygon']与列表型
list最大的不同就在于,**列表中的元素是可以被修改的**,如增加、删除、替换等,而**元组中的任何一个元素在被定义后就不可被修改**。 且**列表是用中括号
[]来定义的,而元组是用小括号
()来定义的** 但是这不意味着元组本身是不可修改的,元组是可以被删除的,只不过元组中的元素是不可删除的。元组也可以进行类似列表的拼接、索引、求最大/最小值等等。 由于
tuple型和
list`型的操作大同小异,因此在这里只描述一下如何定义元组,不再进行深入拓展: 1
2
3bicycles = ('giant','trek','specialized','santa cruz','cannondale')
print(bicycles)1
('giant', 'trek', 'specialized', 'santa cruz', 'cannondale')
Python基础:操作list以及tuple的引入