《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改变的

所以,直接用列表名初始化另一个列表,其实并不是复制!不是复制!不是复制!
它有点像Java中String类,其实就是引用
全部评论

相关推荐

10-10 11:38
已编辑
湖南理工大学 Java
小浪_Coding:多沟通叭, 公式简历+学历一般的话难找
点赞 评论 收藏
分享
真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务