python学习第二天
嗯,虽说是第二天,因为基础差,三天才看了两天的内容,还没看完,只是把第二天的内容学习了以后自己整理出来做了笔记!主要有判断、循环、列表、元组、copy和切片!
判断
主要是if….else判断,例子如下:
单判断
1 | import getpass #密码加密模块getpass |
多判断
1 | age = 25 |
循环
循环分为while循环和for循环,各自用法用处不同,举例说明:
while循环
1 | age = 25 |
while循环进阶
1 | age = 25 |
for循环
1 | age = 25 |
for循环进阶
1 | for i in range(10): |
列表
简单的列表应用
1 | names= ["张三","李四","王五","赵六"] |
元组
元组和列表的区别在于元组一旦创建,无法修改,所以元组又叫只读列表,如下例子:1
2names = ('张三','李四')
names.append('王五')
如上操作元组会直接报错
copy
copy分为浅copy和深copy,具体例子如下:
浅copy
例子一(简单的浅copy):1
2
3
4
5
6
7
8names = ["张三","李四","王五",["朱七","熊八"],"赵六"]
name2 = names.copy()
print(names)
print(name2)
#把names中的内容copy一份到name2,再修改names列表中的李四一项为拼音
names[1] = "lisi"
print(names)
print(name2)
例子二(浅copy理解):1
2
3
4
5
6
7
8
9
10names = ["张三","李四","王五",["朱七","熊八"],"赵六"]
name2 = names.copy()
print(names)
print(name2)
#把names中的内容copy一份到name2,再修改names列表中的李四一项为拼音
names[1] = "lisi"
#下面一段话是改变names列表里面子列表中的第一个数据,所以在浅copy的时候,只是copy了第一层的数据,但是对于子列表即第二层的数据是无法copy的,也可以理解为第二层的数据其实是在names列表第三个数据这里存了一个内存地址,在修改第二层数据的时候,实际上是修改第三个数据所在地址里面的内容。所以导致了修改子列表中的内容时直接把names和name2的内容全部修改了!
names[3][0]="zhuqi"
print(names)
print(name2)
例子三(引用copy模块的浅copy):1
2
3
4
5
6
7
8
9
10
11
12import copy
names = ["张三","李四","王五",["朱七","熊八"],"赵六"]
#这里的copy.copy(names)和前面的names.copy()是一样的,都是属于浅copy,所以输出一样
name2 = copy.copy(names)
print(names)
print(name2)
#把names中的内容copy一份到name2,再修改names列表中的李四一项为拼音
names[1] = "lisi"
#下面一段话是改变names列表里面子列表中的第一个数据,所以在浅copy的时候,只是copy了第一层的数据,但是对于子列表即第二层的数据是无法copy的,也可以理解为第二层的数据其实是在names列表第三个数据这里存了一个内存地址,在修改第二层数据的时候,实际上是修改第三个数据所在地址里面的内容。所以导致了修改子列表中的内容时直接把names和name2的内容全部修改了!
names[3][0]="zhuqi"
print(names)
print(name2)
深copy
深copy需要引用copy模块才能够做到,如下例子:1
2
3
4
5
6
7
8
9
10
11
12import copy
names = ["张三","李四","王五",["朱七","熊八"],"赵六"]
#这里的copy.deepcopy(names)就表示深copy,即把names中的所有内容包括第二层的数据完全copy到name2
name2 = copy.deepcopy(names)
print(names)
print(name2)
#把names中的内容copy一份到name2,再修改names列表中的李四一项为拼音
names[1] = "lisi"
#下面一段话是改变names列表里面子列表中的第一个数据,所以在浅copy的时候,只是copy了第一层的数据,但是对于子列表即第二层的数据是无法copy的,也可以理解为第二层的数据其实是在names列表第三个数据这里存了一个内存地址,在修改第二层数据的时候,实际上是修改第三个数据所在地址里面的内容。所以导致了修改子列表中的内容时直接把names和name2的内容全部修改了!
names[3][0]="zhuqi"
print(names)
print(name2)
切片
所谓的切片,其实就是把列表里面的内容按照需求切片打印出来,获得想要的结果,如下例子:1
2
3
4names = ["张三","李四","王五",["朱七","熊八"],"赵六"]
print(names[0:-1:2]) #每隔一行打印一个
print(names[::2]) #也是每隔一行打印一个
print(names[:]) #完全切片