
假设你想遍历一个动物列表,可用如下语法,打印出每一个动物的名字
animals=["cat","dog","bird"]for animal in animals:print (animal)深入解析一下第二行代码:
python中函数range()可以生成一系列的数字,包含三个参数,
第一个是起始数,第二个是终止数(生成到终止数的前一个),最后一个是步长(一次加几)(不填时默认为1)

可以利用函数list(),将range()得到的结果直接转为列表。
nums=list(range(1,6)) #将range()的结果作为list()的参数,输出一个数字列表print(nums) #输出[1,2,3,4,5] nums=list(range(2,11,2)) #增加第三个参数,步长为2,也就是从2开始不断加2,直到>=11print(nums) #输出[2,4,6,8,10]列表解析是,将for循环和创建新元素的代码合并成一行,并自动附加新元素。
比如,想要实现创建一个列表,包含1~10的前十个整数的平方,如果不用列表解析,需要费事一些:
squares=[] #创建一个空列表for value in range(1,11): #1~10 squares.append(value**2) #把平方后的值追加到列表中print(squares) #输出[1,4,.....,100]而列表解析可以大大简化我们的代码:
squares=[value**2for value in range(1,11)]print(squares) #输出同上解释下这个语法:
首先制定一个描述性的列表名,这里是squares,
然后方括号内先定义一个表达式,用于生成想要储存到列表中的值,再编写一个循环来给表达式提供值。

列表的部分元素称作切片,要创建一个切片,可指定要使用的第一个元素和最后一个元素的索引。
注:
最后一个元素的索引若省略,代表让切片从指定的第一个元素到达列表的末尾
第一个元素的索引若省略,代表让切片从列表的开头到指定的最后一个元素。

书里写到了列表复制这一段时,我不由得联想到了c++里的深拷贝和浅拷贝问题,
如果你学过c++,可以再回忆一下,两者其实是共通的:
当类内有在堆区开辟的数据时,若你创建对象并赋值,编译器会调用默认的拷贝构造函数,
这个函数内部只是简单地把同一个地址赋予了两个名字,也就是说,a和b的那个堆区成员指向了同一块内存。所以调用析构函数的时候,会导致内存重复释放,使程序崩溃。
回过头来,我们看一下python中的类似问题:

当你简单地想要通过赋值来拷贝a列表,却发现得到一个id号和a一模一样的列表,如果按c++中的说法来看,b=a就只是创建了一个引用,两者指向同一块地址,根本上是一个东西。所以修改其中一个,另一个也会跟着改变。
因此,python为我们提供了一个正确的复制列表的方法:
同时省略起始和终止的索引([:]),让python创建一个始于第一个元素、终止与最后一个元素的切片,也就是复制整个列表。

元组可以创建一系列不可修改的元素,python称这种不可变的列表为元组。
定义方法:
a=(1,2,3) #用圆括号#使用语法和列表一样,如print(a[0])#此时再单独修改列表里的元素,如a[0]=0,就是不合法的直接编写代码来讲解:
colours=["red","orange","yellow","green","blue","purple"]#我们要做一个程序,检测用户输入的颜色是否在列表内,如果在就打印出来selectedcolours=input("请输入你想寻找的颜色")#很多网站运用了同样的逻辑,比如用户名是独一无二的,Tina和tina是同一个用户名#而python比较字符串的逻辑是区分大小写,所以,我们需要在得到用户端的输入后,转成小写和列表比较#因此,为了防止用户输入的是Red,导致找不到列表中的red,我们也要对得到的输入字符串进行转小写处理selectedcolours=selectedcolours.lower()#接下来再遍历列表就可以了for colour in colours:if selectedcolours==colour: print("ok,"+selectedcolours)
与c语言无异,比较是否相等,用(==);比较是否不等,用(!=);表达式满足条件返回True,否则返回False。
如果是数字比较,(>)(<)(>=)(<=)等使用也都与c语言一样。
但是,python中的并且用and关键词、或者用or关键词

为了增强可读性,我们当然可以写成这种格式:(7<4) or (7<5),但非必须。
colours=["red","orange","yellow","green","blue","purple"]selectedcolours=input("请输入你想寻找的颜色")selectedcolours=selectedcolours.lower()if selectedcolours in colours: #检查用户输入的颜色是否在列表里 print("ok,"+selectedcolours)检查是否在列表里,用关键词in,检查是否不在,用关键词not in,不再写代码解释。
if语句使用方法已经在上面的代码里展示过了,基本语法为
if +条件 + :
[缩进]符合条件则执行的语句
而if-else语句用法也和c语言没有差异,基本语法为
if +条件 + :
[缩进]符合条件则执行的语句
else:
[缩进]不符合条件则执行的语句
唯一有点区别的,就是elif这个关键字,它相当于我们学过的else if,下面写代码展示一下:
print("4岁以下免费,4~18岁收5元,18岁以上收10元")age=int(input("购票系统,请输入年龄:")) #input默认接受到字符串,需要强制转换if age<=4: print("免费,该票已获取")elif age>4and age<=18: print("五元,请付款")elif age>18and age<=60: print("10元,请付款")else : print("年龄>60不可购票")和其他语言一样,python的if语句同样支持嵌套
colours=["red","orange","yellow","green","blue","purple"]selectedcolours=input("请输入你想寻找的颜色")selectedcolours=selectedcolours.lower()if colours: #检查列表是否不为空的语法,不空返回True,空返回Falseif selectedcolours in colours: #检查用户输入的颜色是否在列表里 print("ok,"+selectedcolours)else : print("列表为空")小编碎碎念
第二期结束啦。
如果你已经有其他语言的基础了,想要快速上手python,我十分推荐你看书学习,既节省时间、又可以学得通透。
我的这些笔记,是阅读过业界公认的python入门友好书籍,提炼总结出来的,如有模糊之处,也推荐大家买一本这个书,看一看该书作者精彩的讲解,感受一下python的精妙。
我是一只思绪漫游的00后,欢迎关注~