四、整型,字符串,列表的高级操作与调用
字符串: 1.字符串索引, str[开始下标:结尾下标:步长]
2.len(str)字符串的长度
3.成员运算:in 和 not in :判断字符串是否在字符串里print("na" in 或not in"name")
4.变量名.strip(""): 去掉两边的字符,.rstrip()去右边,.lstrip()去左边,(去空格)
5.变量名.split("|",n),用于分割字符串,n代表分割的次数,默认全部分割,分出来的是列表
6.变量名.find("str"),用于查询字符是否在里面
7.变量名.replace(“旧的”,“新的”),替换字符串
列表: 1.切片 list[开始下标:结束下标:步长],从左往右,骨头不顾尾
2.变量名.append()添加,增加到列表【尾部】里面
3.变量名.insert(n,m)增加到指定位置, n是索引,m是添加数据
4.变量名.extend(n,list)n是索引,可以把列表逐一添加到另外一个列表
1.del list[] 删除列表
2.变量名.remove("m"),直接指定删除某元素
3.变量名.pop(),默认从尾部删除,也可以指定,删除值可以返回
4.clear()--清空列表
#一. 整型(int)
#======================================基本使用======================================
#1、用途:存qq号,手机号,不带字母的身份证号...
#2、定义方式
age = 18 # age = int(18)
# int('dsjfjdsf')
# int('1.1') # int只能转纯数字的字符串,小数点都不行
# 进制转换
# 其他进制转10进制
# # 二进制转十进制 0,1
# 10 # 1*(2**1) + 0*(2**0) 2
# 八进制转十进制 0-7
# 235 # 2*(8**2) + 3*(8**1) + 5*(8**0)
# 十六进制转十进制 0-9 A-F
# 217 # 2*(16**2) + 1*(16**1) + 7*(16**0)
print(int('1100',2)) # int可以传第一个参数,表示的是第一个参数到底是什么进制 然后转成十进制
print(int('14',8))
print(int('c',16))
# 10进制转其他进制
# 10进制转二进制
# print(bin(12)) # 0b1100 0b表示后面的数字是二进制数
# 10进制转八进制
# print(oct(12)) # 0o14 0o表示后面的数字是八进制数 14 >>> 1*(8**1) + 4*(8**0))
# 10进制转16进制
# print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
#3、常用操作+内置的方法
#======================================该类型总结====================================
#存一个值
#有序or无序
# 有序:但凡有索引的数据都是有序的
# 可变类型与不可变类型
"""
可变类型:值改变的情况下,id不变,说明你改的是原值(列表,元组,字典都属于可变类型)
不可变类型:值改变的情况下,id一定变如:字符串
"""
x = 10
print(id(x))
x = 11
print(id(x))
# 浮点型
# 作用:薪资 身高 体重
# salary = 1.1 # float(1.1)
res = float('1.11')
print(type(res))
#二. 字符串
#======================================基本使用======================================
#1、用途:描述性
#2、定义方式:'',"",""""""
# s = 'hello baby' # str('hello baby')
# s1 = str([1,2,3,4])
# print(type(s1))
# s2 = str({'name':'jason','password':123})
# print(type(s2))
#1、按索引取值(正向取+反向取) :只能取
# s = 'hello big baby~'
# print(s[0]) # h
#2、切片(顾头不顾尾,步长):从一个大的字符串中截取一段新的小字符串
# 左边的固定就是头,右边固定就是位 没有说按数字来分头尾
# print(s[0:5]) # hello
# print(s[0:10:1]) # hello 步长不写默认是1
# print(s[0:10:2]) # 步长表示隔几个取一个
# 了解负数取值
# print(s[-1] # ~
# print(s[0:5:-2]) # 切片取值默认是从左往右的,负值是从右往左
# print(s[5:0:-1]) # olle
# print(s[-1:-10:-1]) # ~ybab gib
#3、长度len:统计的是字符串中字符的个数
# s1 = 'hello'
# print(len(s1))
#4、成员运算in和not in: 判断一个子字符串是否存在于一个大的字符串中
# print('egon' in 'egon is dsb and egon is sb')
# print('g' in 'egon is dsb and egon is sb')
# print('jason' not in 'egon is dsb and egon is sb')
#5、去掉字符串左右两边的字符strip,不管中间的
# username = input('>>>:').strip()
# if username == 'jason':
# print('good job')
# strip()默认去除字符串首尾的空格
# 使用内置的方法统一采用 句点符(.)
# name1 = 'jason'
# name2 = ' jason '.strip()
# print(name1 == name2)
# name3 = '$$$$$eg$on$$$$'
# print(name3.strip('$')) # 把首尾两边你输入的东西去掉
# 了解即可
# name4 = '% ¥#jason&*)'
# print(name4.strip('% ¥#)'))
# rstrip() lstrip()
# name5 = '$$$$jason$$$$'
# print(name5.lstrip('$')) # left左边
# print(name5.rstrip('$')) # right右边
#6、切分split:针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值
data = 'jaso |n|123| handsome'
# print(data.split('|'))
# username,password,info = data.split('|')
# print(username,password,info)
# 强调:split切分出来的数据类型是一个列表
# print(data.split('o')) # 切割的顺序其实从左往右的
# print(data.split('o',1)) # 切割的顺序其实从左往右的
# print(data.rsplit('o',1)) # 切割的顺序其实从左往右的
# 如果不指定那么split和rsplit效果是一样
#7、循环
# for i in data:
# print(i)
# 需要你掌握的
#1、strip,lstrip,rstrip
#2、lower,upper
# s = 'JaS1oN'
# res = s.lower()
# print(res)
# print(s)
# print(s.upper())
# print(s)
# 调用字符串的方法并没有改变字符串本身
#3、startswith,endswith
s1 = 'egon is dsb'
# print(s1.startswith('e')) # 判断字符串是否以什么什么开头
print(s1.endswith('n')) # 判断字符串是否以什么什么结尾
#4、format的三种玩法(python推荐使用format做格式化输出)
# 第一种 按位置占位 跟%s原理一致
# str1 = 'my name is {} my age is {}'.format('jason',18)
# str1 = 'my name is {} my age is {}'.format(18,'jason',)
# print(str1)
# 第二种 按索引占位
# str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18)
# print(str1)
# 第三种 指名道姓占位(关键字传参)
# str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18)
# # print(str1)
#5、split,rsplit
#6、join
# data = 'jason|123|handsome'
# res_list = data.split('|')
# print(res_list)
#
# res_str = '$'.join(res_list) # 将容器类型中的多个元素通过指定字符拼接成一个字符串
# print(res_str)
# l = ['1','a','b']
# res = '|'.join(l)
# print(res)
#7、replace
# str = 'egon is dsb and egon is sb he has a BENZ'
# res = str.replace('egon','kevin',1)
# print(res)
# print(str)
#8、isdigit # 判断字符串中包含的是否为纯数字
# while True:
# age = input('>>>:')
# if age.isdigit():
# age = int(age)
# if age > 28:
# print('阿姨好')
# else:
# print('你他妈的能不能好好输')
# 需要了解的内置方法
#1、find,rfind,index,rindex,count
s = 'kevin is dsb o and kevin is sb'
# print(s.find('dsb')) # 返回的是d字符所在的索引值
# print(s.find('xxx')) # 找不到的时候不报错返回的是-1
# print(s.find('i',0,3)) # 还可以通过索引来限制查找范围
# print(s.index('o')) # 返回所传字符所在的索引值
# print(s.index('i',0,3)) # 返回所传字符所在的索引值
# print(s.count('n')) # 统计字符出现的次数
#2、center,ljust,rjust,zfill
s9 = 'jason'
# print(s9.center(12,'*'))
# print(s9.ljust(40,'$'))
# print(s9.rjust(40,'$'))
# print(s9.rjust(40,' '))
# print(s9.zfill(40))
#3、expandtabs
# s10 = 'a\tbc'
# print(s10.expandtabs(100))
#4、captalize,swapcase,title
# s12 = 'hElLo WoRLD sH10'
# print(s12.capitalize()) # Hello world 首字母大写
# print(s12.swapcase()) # 大小写互换
# print(s12.title()) # 每个单词的首字母大小
# #5、is数字系列
# num1=b'4' #bytes
# num2=u'4' #unicode,python3中无需加u就是unicode
# num3='壹' #中文数字
# num4='Ⅳ' #罗马数字
# # ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别
# print(num2.isnumeric())
# print(num3.isnumeric())
# print(num4.isnumeric())
#
# # ''.isdecimal(): unicode 只识别普通的阿拉伯数字
# print(num2.isdecimal())
# print(num3.isdecimal())
# print(num4.isdecimal())
#
# # ''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了
# print(num1.isdigit())
# print(num2.isdigit())
# print(num3.isdigit())
# print(num4.isdigit())
#3、常用操作+内置的方法
#======================================该类型总结====================================
#存一个值
#有序(有序:但凡有索引的数据都是有序的)
#不可变类型
字符串的查询与替换
str1 = "hello itcast"
print(str1.find("itcast"))
print(str1.find("0"))
str2 = str1.replace("itcast", "python") # replace 是替换格式replace(旧的,新的)
print(str2)
三.列表
#作用:多个装备,多个爱好,多门课程,多个女朋友等
#定义:[]内可以有多个任意类型的值,逗号分隔
# my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...])
# 或
# l=list('abc')
# l1=list({'name':'jason','password':'123'})
# print(l1)
# list内部原理就是for循环取值 然后一个个塞到列表中去
#优先掌握的操作:
#1、按索引存取值(正向存取+反向存取):即可存也可以取
# l = [1,2,3,4]
# print(l[0:4:1])
# print(l[0::])
# print(l[5::-1])
# print(id(l))
# l[0] = 69
# print(id(l))
# print(l)
#2、切片(顾头不顾尾,步长)
l = [11,22,33,44,55]
l1 = [99,88,77,66]
# [11,22,33,44,55,99,88,77,66]
# 1.尾部添加一个66
# l.append(66) # 注意append值能将被添加的数据当作列表的一个元素
# print(l)
# 2.任意位置添加元素
# l.insert(2,96) # 通过索引在任意位置添加元素
# print(l) # 注意insert值能将被添加的数据当作列表的一个元素
# 3.添加容器类型数据
# l.append(l1)
# l.insert(-1,l1)
# l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部
# l.extend([1,])
# print(l)
#3、长度
# print(len(l))
#4、成员运算in和not in
# print( 444 in l)
#5、往列表中添加元素(******)
# append
# insert
# extend
#6、删除
# print(l)
# del l[2] # del适用于所有的删除操作
# print(l)
# res1 = l.pop() # 尾部弹出
# res2 = l.pop()
# res3 = l.pop()
# print(res1,res2,res3)
# res1 = l.pop(0) # 可以指定索引 按照索引弹出元素
# print(res1)
# res = l.remove(33) # 指定要删除的元素的值
# print(l)
# print(res)
# s = 'haha'
# print(s)
# del s
# print(s)
#7、循环
for i in l:
print(i)