python编程 从入门到实践——第3章、第4章

目录

第3章——列表简介

1. 列表定义

1.1 访问列表元素

2. 修改、添加和删除元素

2.1 修改列表元素

2.2 添加元素 

2.3 删除元素

3.组织列表

 

第4章——操作列表

1. 遍历列表 for

2. 创建数字列表

2.1 使用函数range()、list()创建数字列表

2.2 列表解析

3. 使用列表的部分元素(子集)——切片 

3.1 切片

3.2 遍历切片

3.3 复制列表

4. 元祖

4.1 元祖定义


第3章——列表简介

1. 列表定义

列表是一系列按特定顺序排列的元素组成,元素之间可以没有任何关系。

用[ ]方括号表示列表,用 , 逗号分隔元素。

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']

1.1 访问列表元素

列表是有序集合,要访问列表的元素,需要将该元素的位置或索引告诉python。

列表名称[索引]

  • 列表元素的索引是从0开始的
  • 索引指定为-1,可以返回最后一个列表元素
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles[0])  
trek
>>> print(bicycles[0].title())
Trek
>>> print(bicycles[-1])          
specialized

2. 修改、添加和删除元素

2.1 修改列表元素

>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']

>>> print(motorcycles)
['honda', 'yamaha', 'suzuki', 'ducati']

>>> motorcycles[0]="ducati"
>>> print(motorcycles)
['ducati', 'yamaha', 'suzuki', 'ducati']

2.2 添加元素 

(1)在列表末尾添加元素 append()

#在列表末尾添加元素,用append()
>>> motorcycles = ['honda', 'yamaha', 'suzuki']            
>>> motorcycles.append('ducati')
>>> motorcycles
['honda', 'yamaha', 'suzuki', 'ducati']

#通常是先新建空列表,之后将元素添加进去
>>> motorcycles=[]
>>> motorcycles.append('honda') 
>>> motorcycles.append('yamaha') 
>>> motorcycles.append('suzuki') 
>>> motorcycles
['honda', 'yamaha', 'suzuki']

(2)在列表中插入元素 insert(位置,“插入元素值”)

>>> motorcycles
['honda', 'yamaha', 'suzuki']
>>> motorcycles.insert(0,"ducati")
>>> motorcycles
['ducati', 'honda', 'yamaha', 'suzuki']

2.3 删除元素

(1)使用del语句删除元素(已知元素的位置)del 列表名称[位置]

>>> motorcycles
['ducati', 'honda', 'yamaha', 'suzuki']
>>> del motorcycles[0]
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']

(2)使用方法pop()删除元素

pop()可删除列表末尾的元素,并能让你接着使用这个被pop出来的元素;pop(索引)可以弹出任意位置的元素:

>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> pop_motorcycles=motorcycles.pop()
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> print(pop_motorcycles)
ducati

#pop(索引)弹出任意位置的元素
>>> second_word=motorcycles.pop(1)
>>> print(second_word)
yamaha

(3)根据值删除元素 remove()

方法remove()只删除第一个符合条件的值,如果要删除的值在列表中多次出现,要用循环来删除。

>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> motorcycles.remove('ducati')
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']


#提前将要删除的值存在一个变量中,就可以在remove之后再次使用
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> too_expensive = 'ducati'
>>> motorcycles.remove(too_expensive)
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> print("\nA " + too_expensive.title() + " is too expensive for me.")

A Ducati is too expensive for me.

3.组织列表

3.1 使用方法sort()对列表永久性排序,sorted()函数对列表临时排序(不会改变原列表)

#方法sort()永久性排序,如果想按字母逆序可以cars.sort(reverse=TRUE)
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'subaru', 'toyota']


#sorted()函数暂时性排序,如果想an字母逆序可以sorted(cars,reverse=TRUE)
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']

>>> print(sorted(cars))
['audi', 'bmw', 'subaru', 'toyota']

>>> print(sorted(cars, reverse=True))
['toyota', 'subaru', 'bmw', 'audi']

>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']

3.2 方法reverse()倒着打印列表

  • 注意:不是按字母逆序排列,只是反转列表元素的排序。
  • 方法reverse()会永久性修改排列顺序,但可以再次调用reverse()恢复到原来的顺序。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> cars.reverse()
>>> print(cars)
['subaru', 'toyota', 'audi', 'bmw']
>>> cars.reverse()
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']

3.3 确定列表长度 len()函数

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4

第4章——操作列表

1. 遍历列表 for

注意:

  • for后面的临时变量可以指定任何名称
  • for语句结尾不要忘记冒号:
  • for语句后面,每个缩进的代码行都是循环的一部分,且针对列表中的每个值都执行一次
pizza_type=["pineapple","durian","tomato"]
for pizza in pizza_type:
    print("I like " + pizza + " pizza")
print("I really love pizza")

2. 创建数字列表

2.1 使用函数range()、list()创建数字列表

函数range()从指定的第一个值开始数,到达指定的第二个值停止,输出不包含第二个值,如range(1,5)只会输出1~4

#range从1~5,不包含6,差一行为
>>> numbers = list(range(1,6)) 
>>> print(numbers)
[1, 2, 3, 4, 5]

#range函数可以指定步长,打印出1~5内的奇数
>>> numbers = list(range(1,6,2)) #步长为2,从第一个值开始加2,直到到达或超出第二个值
>>> print(numbers) 
[1, 3, 5]

两个星号(**)表示乘方运算,以下例子创建一个列表包含1~10的平方数:

>>> squares=[]
>>> for value in range(1,11):
...     squares.append(value**2)
...
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2.2 列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

如上面创建一个列表包含1~10的平方数,可以写成:

>>> squares=[value**2 for value in range(1,11)]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 首先制定一个描述性的列表名,如squares;
  • 然后制定一个方括号,定义一个表达式,用于生成你要存储到列表中的值,如表达式value**2;
  • 编写一个for循环,用于给表达式提供值(注意:不需要添加冒号),再加上方括号。

3. 使用列表的部分元素(子集)——切片 

3.1 切片

指定要使用的第一个元素的索引和最后一个元素的索引+1,和函数range()一样,到达第二个索引前面的元素就会停止。

例如:取前四个元素,索引为0~3,创建切片则为players[0:4]

>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> print(players[0:4])
['charles', 'martina', 'michael', 'florence']

#从第二个元素一直取到末尾
>>> print(players[1:])
['martina', 'michael', 'florence', 'eli']

#取前三个元素
>>> print(players[:3])
['charles', 'martina', 'michael']

#取最后三个元素
>>> print(players[-3:])
['michael', 'florence', 'eli']

3.2 遍历切片

>>> print("Here are the first three players on my team:")
Here are the first three players on my team:
>>>
>>> for player in players[:3]:
...     print(player.title())
...
Charles
Martina
Michael

3.3 复制列表

复制一个列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])

my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods[:] 

注意!!!!

一定不能不使用切片!!!

#错误示范!!!!
my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods #这样my_foods和friend_foods这两个变量都指向同一个列表,后续对任意一个添加、删除、修改都会同时影响到两个表

4. 元祖

4.1 元祖定义

不能修改的值成为不可变的,而不可变的列表称为元祖。

元祖看起来像列表,但使用的是圆括号

(1)访问元祖的方法跟访问列表的方法一样。

>>> dimensions = (200, 50)
>>> print(dimensions[0])
200

(2)元祖无法像列表一样直接修改,修改会报错:

dimensions = (200, 50)
>>> dimensions[0]=400
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

修改元祖变量的方法就是对元祖变量重新赋值

dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
    print(dimension)
    
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
    print(dimension)

#输出
Original dimensions:
200
50

Modified dimensions:
400
100

 

练习4-10:要注意在运算的时候,如果运算式子中有浮点型,结果可能也是浮点型。切片只能用整型,所以要将浮点型转化为整型,可以用 int()函数。

d=[i**3 for i in range(1,12)]
for i in d:
    print(i)

print("the first three items in the list are:")
for i in d[:3]:
    print(i)

print("three items from the middle of the list are:")
for i in d[int((len(d)/2)-1.5):int((len(d)/2)+1.5)]:   #浮点型转化为整型
    print(i)

print("the last three items in the list are:")
for i in d[-3:]:
    print(i)

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页