5.字符串、列表、元祖常用操作

字符串

#作用:名字,性别,国籍,地址等描述信息

#定义:在单引号\双引号\三引号内,由一串字符组成 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、循环

不可变的列表


?

 

 

 

5.字符串、列表、元祖常用操作

上一篇:array


下一篇:AtomicReference | int 和long类型转化 | Optional.ofNullable