for循环能够实现的事情while循环都可以实现,
但是for循环在循环取值的时候语法更加简单快捷。
# while循环 count = 0 while count < 4: print('>>>:',name_list[count]) count += 1 # for循环 for name in name_list: print('>>>:', name)
# for循环不需要添加结束条件,会随着取值的完毕自动结束
上面的代码值是有明确类型的,如果当值没有明确的类别时,变量名可以取i、j、k、item等。
for循环字符串会将字符串里面单个单个字符依次赋值给变量名i。
除了列表之外,for循环还可以从字典中获取值,但是for循环从字典取值字会取出字典的变量名,变量值是无法直接获取的。
内部能够存档多个元素的数据类型都可以称之为容器类型,例如:列表、字典、元组、集合(不常用)。
除了容器类型,for循环还可以对字符串循环取值,获得字母与空格。
for i in range(0, 101): # 本质是一个迭代器(忽略),可以简单的看成是一个列表 print(i) for i in range(5): print(i) # 一个参数,默认从0开始(顾头不顾尾) for i in range(5,10): print(i) # 两个参数,第一个是起始位包含在内,第二个是终止位不包含(顾头不顾尾) for i in range(0,250,25): print(i) # 三个参数,最后一个是数字间隔,类似于产生等差序列
查看数据类型拥有的方法,使用.即可
可以用作数据类型的转换,但是既不能把float转成int,也不能把数字之外的文本转成int。
也可以用作进制转换,把其他进制转成十进制。
以后如果看到数字前面,ob开头则是二进制数,0o开头则是八进制数,0x开头则是十六进制数。
print(bin(100)) # 0b1100100 # 将十进制转换成八进制 print(oct(100)) # 0o144 # 将十进制转换成十六进制 print(hex(100)) # 0x64 print(int('0b1100100', 2)) print(int('0o144', 8)) print(int('0x64', 16)) # 上面三个输出结果都是100
不能转换数字之外的文本。
n1 = '11' print(float(n1)) # 11.0 n2 = '11.11' print(float(n2)) # 11.11 n3 = 'jyb' print(float(n3)) # 报错
可以把任意类型的数据转成字符串。
res = 'hello world' # 空格也算 print(len(res)) # 11
res = 'hello world' print(res[0]) # h
res = 'hello world' # 顾头不顾尾,第六位是不取的 print(res[1:5]) # ello
res = 'hello world' # 2表示间隔一个取一个,不写默认没有间隔 print(res[1:8:2]) # el o # 取得的是e、l、空格、e
data = 'jyb|18|worker|read' # 以|为标识隔开 print(data.split('|')) # ['jyb', '18', 'worker', 'read'] # 正常顺序:从左往右 # maxsplit:切割几次 print(data.split('|', maxsplit=1)) # ['jyb', '18|worker|read'] # 从右往左 print(data.rsplit('|', maxsplit=1)) # ['jyb|18|worker', 'read']
res = 'Yu0My' print(res.upper()) # 转大写 YU0MY print(res.lower()) # 转小写 yu0my print(res.isupper()) # 字符串是否是纯大写 print(res.islower()) # 字符串是否是纯小写
print('123'.isdigit()) # True print('jyb123'.isdigit()) # False
res = 'my name is jyb jyb jyb jyb jyb' print(res.count('jyb')) # 5
只能支持for循环数据类型
l1 = [11, 22, 33, 44, 55, 66] print(len(l1)) # 6
l1 = [11, 22, 33, 44, 55, 66] print(l1[0]) # 11
l1 = [11, 22, 33, 44, 55, 66] # 顾头不顾尾 print(l1[0:4]) # [11, 22, 33, 44]
l1 = [11, 22, 33, 44, 55, 66] # 顾头不顾尾 print(l1[0:4:2]) # [11, 33]
l2 = [11, 222, 33, 22, 33, 11, 11, 11, 22, 22, 33, 44, 44] print(l2.count(11)) # 4
l3 = [55, 44, 22, 33, 11, 99, 77, 88] print(l3) # [11, 22, 33, 44, 55, 77, 88, 99] # 默认是升序 l3.sort() print(l3) # [11, 22, 33, 44, 55, 77, 88, 99] # 倒序 l3.sort(reverse=True) print(l3) # [99, 88, 77, 55, 44, 33, 22, 11]
字典内元素是无序的
user_dict = {'username': 'jyb', 'pwd': 123, 'hobby': 'read'} print(len(user_dict)) # 3
user_dict = {'username': 'jyb', 'pwd': 123, 'hobby': 'read'} print(user_dict['username']) # jyb print(user_dict['xxx']) # 键不存在会直接报错 print(user_dict.get('username')) # jyb print(user_dict.get('xxx')) # None 键不存在不会报错返回None
user_dict = {'username': 'jyb', 'pwd': 123, 'hobby': 'read'} res = user_dict.pop('username') print(user_dict, res) # {'pwd': 123, 'hobby': 'read'} jyb
user_dict = {'username': 'jyb', 'pwd': 123, 'hobby': 'read'} # 获得k键 print(user_dict.keys()) # ['username', 'pwd', 'hobby'] # 获得v值 print(user_dict.values()) # ['jyb', 123, 'read'] # 获得键值对 print(user_dict.items()) # [('username', 'jyb'), ('pwd', 123), ('hobby', 'read')]
集合内元素是无序的。
功能:1.去重,2:关系运算
f1 = {'jyb', 'tony', 'kevin', 'jack'} f2 = {'jyb', 'tom', 'jerry', 'tony'} # 1.求两个人共同好友 print(f1 & f2) # {'tony', 'jyb'} # 2.求f1独有的好友 print(f1 - f2) # {'jack', 'kevin'} # 3.求f2独有的好友 print(f2 - f1) # {'tom', 'jerry'} # 4.求两个人所有的好友 print(f1 | f2) # {'jyb', 'jerry', 'tony', 'jack', 'tom', 'kevin'} # 5.求两个人各自的好友 print(f1 ^ f2) # {'kevin', 'jack', 'tom', 'jerry'} # 6.父集 子集 print(f1 > f2) print(f1 < f2)