🌸I could be bounded in a nutshell and count myself a king of infinite space.
特别鸣谢:木芯工作室 、Ivan from Russia
变量和简单的数据类型
下划线开头的对象
单下划线_
变量
在Python中,变量可以包含数字、字母、下划线等,所以单独一个下划线_也是一个变量
,表示一个临时对象
,一般后续不会用到,比如:
>>> i = 0 >>> for _ in range(10): ... i += 1 ... >>> i
程序中运行的最近一个结果
单下划线_也可以表示程序中运行的最近一个结果,如:
>>> 'https://machinelearning.blog.csdn.net/' 'https://machinelearning.blog.csdn.net/' >>> _ 'https://machinelearning.blog.csdn.net/' >>> 100 100 >>> _ 10
国际化和本地化字符串之间翻译查找的函数
单下划线_作为函数名
时,一般是代表了国际化和本地化字符串之间翻译查找的函数。
单下划线开头变量_var
或函数_fun()
单下划线开头_var的变量或函数_fun表示该变量或函数为内部使用的变量
,不建议在外部使用,但单下划线开头仅仅是一个提示,没有权限控制,实际上可以在外部访问。同时,如果用from <module> import *
和from <package> import *
时,这些属性、方法、类将不被导入
。
单下划线结尾var_
为了防止跟系统关键字重名
了,比如函数里需要有个参数class,但是Python中class为关键字,所以需要将 class设置为class_
。
双下划线开头变量__var
或函数__fun()
代表着类中的私有变量名或函数
,主要用于避免子类覆盖父类的方法
,如果需要访问,需使用_classname__fun()
。
前后双下划线变量__var__
或函数__fun__()
系统定义
的变量名称或函数,如Python的魔法函数
: __ init__(),__ str__(),__ new__(),__ unicode__(), __ call__(),__ len__(),__repr__(),__ setattr__(),__ getattr__(),__ getattribute__(),__ delattr__(),__ setitem__(),__ getitem__(),__ delitem__(),__ iter__(),__ del__(),__dir__(),__dict__(),__exit__(),__enter(),__all__()。
我们定义变量名称或函数是应该尽量避免前后加双下划线。
版权声明:本文为CSDN博主「von Neumann」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hy592070616/article/details/125114737
删除内存中的对象
a='0' del(a) print(a) //报错
列表与元组
i = 0 while i<5: print(12) i+=1
debug
三酷猫钓鱼记录
a,b,c=6,5,8 print(''*3+'表2.1'+' 三酷猫的钓鱼记录') print("| |"+"日期"+" 鱼名"+" 数量") print("|1 |"+"2017.11"+" 鲫鱼"+" %d"%(a)) print("|2 |"+"2017.11"+" 鲫鱼"+" %d"%(b)) print("|3 |"+"2017.11"+" 鲫鱼"+" %d"%(c)) print( "总共 %d+%d+%d=19 "%(a,b,c))
实际POS机小条打印
血的教训:%要紧随其后
num1,num2,num3=6,5,8 price1,price2,price3=8.1,8.2,8 print(''*3+'表2.1'+' 三酷猫的钓鱼记录') print("| |"+"日期"+" 鱼名"+" 数量 单价") print("|1 |"+"2017.11"+" 鲫鱼"+" "+str(num1)+" "+str(price1)) print("|2 |"+"2017.11"+" 鲤鱼"+" "+str(num2)+" "+str(price2)) print("|3 |"+"2017.11"+" 草鱼"+" "+str(num3)+" "+str(price3)) print( "总共数量%d+%d+%d=19 "%(num1,num2,num3)+"总共"+str(123))
使用循环找乌龟
三酷猫钓鱼记录查找
fish_record=‘鲫鱼5条、鲤鱼8条、鲢鱼7条、草鱼2条、黑鱼6条、乌龟1只’
fish_record='鲫鱼5条、鲤鱼8条、鲢鱼7条、草鱼2条、黑鱼6条、乌龟1只' i=0 total=len(fish_record) print(total) while i<total: print(str(i) + "--------" + str(total)) if fish_record[i:i+2]=="乌龟": print("乌龟有"+fish_record[i+2:i+3]+"只") i+=5
可迭代对象
数字列表,字符串,列表,元组,字典…
📗理解一
Iterable
对象,就是可迭代对象,即可以用for...in...
进行遍历的对象,就叫可迭代对象。
比如列表,元组,字符串,字典等都属于可迭代对象。
📘理解二
一个对象如果实现了__iter__
方法,那么我们称这个对象是可迭代对象。
2️⃣什么是迭代器
📗理解
一个实现了__iter__
方法和__next__
方法,并且可以通过__next__
方法不断返回下一个值的对象称为Itertor
,即迭代器。
也就是说,迭代器均可以使用 for...in... 和next
逐一遍历。
迭代器的两个最基本的方法:iter()
和 next()
.
✔️注意
需要注意的是,列表,元组,字典,集合,字符串
均实现了__iter__
方法,但并未实现__next__
方法,所以这些对象并不能称为迭代器。
3️⃣迭代器对象
✨iter()
列表,元组,字符串等对象都可以使用iter()方法来创建迭代器对象。
✨next()
创建迭代器对象后就可以使用next()
方法来访问元素
访问迭代器对象都是从第一个元素开始,直到访问结束
迭代器只能往前不会后退
🔋实例
>>> list_1 = [1,2,3] >>> it_list = iter(list_1) >>> print(next(it_list)) >>> 1 >>> print(next(it_list)) >>> 2 >>> print(next(it_list)) >>> 3 >>> print(next(it_list)) >>> Traceback (most recent call last): ... StopIteration
fish_record='鲫鱼5条、鲤鱼8条、鲢鱼7条、草鱼2条、黑鱼6条、乌龟1只' fish_record = iter(fish_record) print(next(fish_record))
显然,如果访问到迭代器对象的最后一个元素时继续访问,就会触发StopIteration异常
4️⃣有关迭代的函数
🌱---- enumerate()
语法:
enumerate(iterable, start=0)
用法:
返回一个索引和enumerate
对象
参数:
iterable
----可迭代对象或迭代器
start
----索引值,默认为0
实例:
例1
>>>teams=['勇士', '热火', '骑士'] >>>enumerate(teams) enumerate object at 0x000002E9569016C0> >>>for t in enumerate(teams): print(t, end = ' ') ... (0, '勇士') (1, '热火') (2, '骑士')
例2
>>>teams=['勇士', '热火', '骑士'] >>>for i, t in enumerate(teams): print(i, t, end=" ") ... 0 勇士 1 热火 2 骑士
例子3
>>>teams=['勇士', '热火', '骑士'] >>>t1 = enumerate(teams) >>>t1.__next__() (0, '勇士') >>>t1.__next__() (1, '热火') >>>t1.__next__() (2, '骑士') >>>t1.__next__() Traceback (most recent call last): ... t1.__next__() StopIteration
例4
>>>teams=['勇士', '热火', '骑士'] >>>t1 = enumerate(teams,2) >>>t1.__next__() (2, '勇士') >>>t1.__next__() (3, '热火') >>>t1.__next__() (4, '骑士') >>>t1.__next__() Traceback (most recent call last): ... t1.__next__() StopIteration
🌱---- map()
用法:
该函数用于将一个函数依次映射到可迭代对象的每个元素上,再返回一个map对象
实际上,map对象既是可迭代对象,也是一个迭代器对象
语法:
map(function, iterable, ...)
1
参数:
function
---- 函数
iterable
---- 可迭代对象,可以有多个iterable
返回:
该函数返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。
当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束
实例:
由于该函数返回的是迭代器,所有我们可以用list()
函数将结果转换
为列表
。
🌱---- zip()
用法:
将多个迭代器对象
(或可迭代对象)中的元素压缩到一起,并返回一个zip对象
实际上,zip对象既是可迭代对象,也是一个迭代器对象
语法:
zip(iterable, ...)
1
参数:
iterable
----可迭代对象,可以有多个。
返回:
该函数在多个iterable
上并行迭代,从每个可迭代对象上返回一个数据项组成元组。
也就是说, zip()
返回元组的迭代器
,其中第 i 个元组包含的是每个参数迭代器的第 i 个元素。
如图:
🌱---- filter()
用法:
传入带有一个参数的函数function,并返回一个filter对象
filter对象中的元素是由参数中的iterable对象使得函数function返回值为True的那些元素组成
通俗讲就是满足function函数条件的那些元素组成了filter对象
实际上,filter对象既是可迭代对象,也是一个迭代器对象
语法:
filter(function, iterable)
1
参数:
function
----判断函数,用于过滤掉对象里不符合条件的元素
iterable
----可迭代对象,如列表,元组等。
返回:
返回一个新的迭代器,其中的元素都符合判断函数的条件
实例:
我们可以利用list()函数
来转换filter()函
数的返回值
版权声明:本文为CSDN博主「翼同学」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_62999278/article/details/123884858
for循环的3用法
for var in range(9): print("wowudi")
fish_record='鲫鱼5条、鲤鱼8条、鲢鱼7条、草鱼2条、黑鱼6条、乌龟1只' i=0 for i in range(len(fish_record)): if fish_record[i+2:i+3] =="5": print("鲫鱼"+"5") i+=5