#作用:名字,性别,国籍,地址等描述信息
#定义:在单引号\双引号\三引号内,由一串字符组成 name=‘egon‘
优先掌握的操作:
#1、按索引取值(正向取+反向取) :只能取 #2、切片(顾头不顾尾,步长) #3、长度len
#4、成员运算in和not in
#5、移除空白strip #6、切分split #7、循环
需要掌握的操作:
#1、strip,lstrip(左边),rstrip(右边)
name=‘*egon**‘
print(name.strip(‘*‘))
print(name.lstrip(‘*‘))
print(name.rstrip(‘*‘)
#2、lower(字母小写),upper(字母大写)
name=‘egon‘
print(name.lower())
print(name.upper())
#3、startswith(判断是否以xxx开头),endswith(判断是否以xxx结束)
name=‘alex_SB‘
print(name.endswith(‘SB‘))
print(name.startswith(‘alex‘))
#4、format的三种玩法
res=‘{} {} {}‘.format(‘egon‘,18,‘male‘)
res=‘{1} {0} {1}‘.format(‘egon‘,18,‘male‘)
res=‘{name} {age} {sex}‘.format(sex=‘male‘,name=‘egon‘,age=18)
#5、split,rsplit
name=‘root:x:0:0::/root:/bin/bash‘
print(name.split(‘:‘)) #默认分隔符为空格
name=‘C:/a/b/c/d.txt‘ #只想拿到*目录
print(name.split(‘/‘,1))
?
name=‘a|b|c‘
print(name.rsplit(‘|‘,1)) #从右开始切分
#6、join
tag=‘ ‘
print(tag.join([‘egon‘,‘say‘,‘hello‘,‘world‘])) #可迭代对象必须都是字符串
#7、replace:取代或者替换
name=‘alex say :i have one tesla,my name is alex‘
print(name.replace(‘alex‘,‘SB‘,1))
#8、isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input(‘>>: ‘)
print(age.isdigit())
其他操作(了解即可)
#1、find,rfind(从右边开始找),index,rindex(从右边开始找),count
name=‘egon say hello‘
print(name.find(‘o‘,1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index(‘e‘,2,4)) #同上,但是找不到会报错
print(name.count(‘e‘,1,3)) #顾头不顾尾,如果不指定范围则查找所有
#2、center,ljust,rjust,zfill
name=‘egon‘
print(name.center(30,‘-‘))
print(name.ljust(30,‘*‘))
print(name.rjust(30,‘*‘))
print(name.zfill(50)) #用0填充
#3、expandtabs
name=‘egon\thello‘
print(name)
print(name.expandtabs(1))
#4、captalize(首字母变大写),swapcase(两极反转:大变小小变大),title(每个首字母变大写)
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg=‘egon say hi‘
print(msg.title()) #每个单词的首字母大写
#5、is数字系列
#在python3中
num1=b‘4‘ #bytes
num2=u‘4‘ #unicode,python3中无需加u就是unicode
num3=‘四‘ #中文数字
num4=‘Ⅳ‘ #罗马数字
#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False
#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False
#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True
#三者不能判断浮点数
num5=‘4.3‘
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
‘‘‘
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric
‘‘‘
#6、is其他
print(‘===>‘)
name=‘egon123‘
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())
定义
定义:[ ]内可以有多个任意类型的值,逗号分隔 如my_girl_friends=[‘alex‘,‘wupeiqi‘,‘yuanhao‘,4,5] #本质my_girl_friends=list([...]) 或l=list(‘abc‘)
list数据类型转换:
把可迭代的类型转成列表,可以被for循环遍历的类型都是可迭代的。
list("hello"),list(字典)得到的是key
list(1000)不行,list(range(1000))可以
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):
即可存也可以取
2、切片(顾头不顾尾,步长)
3、长度
4、成员运算in和not in
5、加元素
追加list.append(xxx)
插入list.insert(索引,插入对象) 注:插在索引前
6、删除
del l[索引]
l.remove(指定元素删除)
l.pop(指定索引删除)
7、循环
for x in list:
print(x)值
for i,x in enumerate(list):
print(i,x)索引和值
列表深浅copy:列表copy时,如果只进行浅copy,其可变数据类型的内存地址不会改变,对新列表的可变数据类型进行修改时,原列表的该可变类型数据也会发生变化;
如果想避免这种情况发生,需要进行深copy,其原理是将原列表中的可变数据类型进行出来,重新开辟内存空间进行copy,这样修改新列表的可变数据类型时,原列表不会发生改变,当然不可变数据类型不会影响,因此不可变数据类型的内存地址还是一样的。
换句话说:深copy对所有的沿途的可变类型的数据到一个新的内存地址,可变类型里面的不可变类型数据不用处理。
l = [11, 22, ["xx", "yy"]]
l[0]=66
new_l = l[:]
new_l[0] = 66
new_l[2][0]=‘zz‘
l[2][0]=77112313123123
print("新列表",new_l)
print("原列表",l)
?
print(id(l[0]),id(l[1]),id(l[2]))
print(id(new_l[0]),id(new_l[1]),id(new_l[2]))
new_l[0] = 66
print(l)
new_l[2][0]="zz"
?
from copy import deepcopy
new_l1 = deepcopy(l)
print(id(l[0]), id(l[1]), id(l[2]))
print(id(new_l1[0]), id(new_l1[1]), id(new_l1[2]))
new_l1[2][0]="zzzzz"
print(new_l1)
print(l)
#ps:反向步长 l=[1,2,3,4,5,6]
#正向步长 l[0:3:1] #[1, 2, 3] #反向步长 l[2::-1] #[3, 2, 1] #列表翻转 l[::-1] #[6, 5, 4, 3, 2, 1]
# 需要掌握的操作(****)
l=[11,22,33,44,33,33,55]
new_l = l.copy() # 相当于new_l = l[:]
?
print(len(l)) #取长度
?
l.index() #找值
print(l.index(33))
print(l.index(7777))
?
l.count() #找该值的个数
print(l.count(33))
?
l.clear() #清空列表
print(l)
?
# l.extend() 将能被迭代的数据类型遍历一次追加到列表中
l.extend("hello")
l.extend([1,2,3])
l.append([1,2,3])
print(l)
?
# l.reverse() 将列表倒序排列
l.reverse()
print(l)
?
# l.sort() 排序从小到大
l=[11,-3,9,7,99,73]
l.sort(reverse=True) #从大到小
print(l)
?
# 总结
列表可以存多个值、有序、可变
#作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
#定义:与列表类型比,只不过[]换成() age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))
#优先掌握的操作: #1、按索引取值(正向取+反向取):只能取 #2、切片(顾头不顾尾,步长) #3、长度 #4、成员运算in和not in
#5、循环
?