《python编程--从入门到实践》读书笔记二
一、遍历列表
1、简单的遍历整个列表
使用for循环来遍历整个列表
#coding:utf-8
names=["Sandy",'Kitty','Facker','BOb'];
for name in names:
print(name);
其中name是一个新变量
也可以换成其他的变量
#coding:utf-8
names=["Sandy",'Kitty','Facker','BOb'];
for a in names:
print(a) #效果是一样的
二、缩进
用到了for循环,就不得不讲一讲缩进。
和C、C++不同的是,python中没有花括号来划定循环体。
而python只能用缩进来划定循环体的范围。
所以,使用python一定要注意缩进! 一定!一定!
python语句结束可以用“;”标识,但是因为有了缩进的严格限制,不必须要写上“;”
缩进错误有五类:
①忘记缩进
②忘记缩进额外的代码行
③不必要的缩进
④循环后的不必要的缩进
⑤遗漏了冒号(for循环等中的冒号)
三、创建数值列表
1、使用函数range()
rang()可以用来限定一个循环的次数,也就是规定for循环中变量的大小
#coding:utf-8
for value in range(1,6):
print(value)
打印输出是1-5,这就是range( )的特性。
range()函数中的两个参数必须是整数。
2、使用range()创建数字列表
(1)、使用list()函数来用range()初始化一个列表。
nums= list(range(1,7))
print(nums)
(2)、在range()函数中还可以指定步长
#coding:utf-8
nums = list(range(1,7,2)) #指定步长为2
print(nums) #列表中的数值为1,3,5
不借助list(),而是用for循环更加灵活的创建数值列表
#coding:utf-8
nums= []
for i in range(1,7):
nums.append(i**2) #将元素插入到列表末尾
print(nums) #结果应显示为 [1, 4, 9, 16, 25, 36]
3、列表解析
列表解析将for循环和创建新元素的代码合成一体,并自动附加新元素。
#coding:utf-8
nums = [i**2 for i in range(1,7)]
print(nums) #结果应显示为 [1, 4, 9, 16, 25, 36]
四、切片
1、什么是切片
切片是生物学上的名词,在python中表示为列表元素的一部分。
切片是通过索引来实现的
#coding:utf-8
names = ['Sandy','Lucy','Kitty','Nancy','Liliy']
print(names[2:4]) #打印索引为2到3的元素
print(names[:3]) #打印从列表开头到索引为2的元素
print(names[2:]) #打印从索引为2的元素到列表末
print(names[-3:]) #打印从倒数第三个元素到列表末
names[2:4] 中不包含names[4] ,这一点和range()有一点类似
当然也可以使用切片创建一个新的列表
#coding:utf-8
girls = names[2:5]
print(girls) #显然结果是 ['Kitty', 'Nancy', 'Liliy']
2、遍历切片
还是利用for循环来尽心遍历
#coding:utf-8
names = ['Sandy','Lucy','Kitty','Nancy','Liliy']
for i in names[:3]:
print(i.lower())
#结果应为前三个元素的小写形式。
3、复制列表
前面我们讲到切片,完全可以用切片的方法赋值一个列表,只不过这个切片的大小和列表一样而已
#coding:utf-8
names= ['Sandy','Lucy','Kitty','Nancy','Liliy']
names_2=names[:] #切片为列表整个大小
print(names) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
print(names_2) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
但是我们这样做似乎也可以复制
#coding:utf-8
names= ['Sandy','Lucy','Kitty','Nancy','Liliy']
names_3=names
print(names) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
print(names_3) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy','Liliy']
单单从两个程序来看,这两者没什么区别,但是真的是这样吗
我么在来看看下面的一个程序:
#coding:utf-8
names = ['Sandy','Lucy','Kitty','Nancy','Liliy']
names_2=names[:]
names_3=names;
print(names) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
print(names_2) #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
print(names_3); #结果是['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
names.append("Bob"); #在names末添加一个元素Bob
#打印三个列表
print(names) #结果显示为['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy', 'Bob']
print(names_2) #结果显示为['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy']
print(names_3) #结果显示为['Sandy', 'Lucy', 'Kitty', 'Nancy', 'Liliy', 'Bob']
我们只是修改了列表names,没有修改另外两个列表。
但是names_3也改变了,并且是随着names改变的