
正文
【02】Python 字符串、列表、元组、字典
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1 列表
list就是一种采用分离式技术实现的动态顺序表(tuple也一样):
- 在建立空表(或者很小的表)时,系统分配一块能容纳8个元素的存储区;
- 在执行插入操作(insert或append)时,如果元素存储区满就换一块4倍大的存储区;
- 但如果此时的表已经很大(目前的阀值为50000),则改变策略,采用加一倍的方法。引入这种改变策略的方式,是为了避免出现过多空闲的存储位置。
1.1 列表
列表也叫数组,列表定义,使用[]即可;列表里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组,套几层就是几维,定义格式如下:
stu_name = ['崔海龙','杨帆','刘荣心']#一维数组
list2 = ['marry','lily',[50,'monkey']] #二维数组
list3 = ['name','sex',['lily',124,['aaaa','bbb']]] #三维数组
列表的值可以修改,所以都没返回值,不能直接打印!
1.2 列表方法--增
append() #在list的末尾添加一个元素
insert() #指定位置添加元素
extend() #末位添加序列
L1+L2 #合并
L1*3 #乘
stu_name.append('杨月')#在list的末尾添加一个元素
stu_name.insert(0,'小军')#指定位置添加元素
List1.extend(seq)#合并两个列表(序列)
List1 + List2#合并两个列表
>>> stu = ['tom', 'jack']
>>> str = 'Jane'
>>> stu.extend(str)
>>> stu
['tom', 'jack', 'J', 'a', 'n', 'e']
1.3 列表方法--删
remove() #删除指定元素,如果
pop() #删除最后一个元素
pop(index) #删除指定下标的元素
del list / del list[index]
clear()
stu_name.pop()#删除最后一个元素
stu_name.pop(4)#删除指定下标的元素
stu_name.remove('小军')#删除指定的元素
del stu_name[-1]
stu_name.clear()#清空列表,变成空列表
1.4 列表方法--改
list[index] = 'XXXX'
reverse() #反转
sort(reverse=True) #排序,默认是升序,也是不能直接通过
stu_name[5]='孔垂顶' #修改指定下标位置的值
List.reverse() #反转
stu.sort() #排序 默认升序
stu.sort(reverse = True) #排序 降序
1.5 列表方法--查
stu[0] #第一个元素
stu[-1] #倒数第一个元素
stu.count('jack') #查询某个元素在list里面出现的次数
stu.index('jack') #查询指定元素的下标,元素不存在的话,会报错;如果有重复的,返回第一个的下标
'元素' in list #元素是否在列表中,返回True或False
2 字典2.1 字典
字典是无序的。
infos = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']}
字典也可以循环。
for k in stus:
print(k,'===>',stus.get(k)) for k,v in stus.items():
print(k,'===>',v)
2.2 字典方法--增
dic['key']='value'# 不管key存不存在,都会修改
dic.setdefault('key','value')# 如果key已存在, 不会修改;如果key不存在,增加key,值为value; 有返回值:如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
2.3 字典方法--删
dic.pop('key')# 把key从字典中删除。如果key不存在,则会报错。dic.pop('key')的返回值为被删除的key对应的值
del dic['key']# 把key从字典中删除。如果key不存在,则会报错
dic.popitem()# 把从字典中随机删除一个key
dic.clear()#把字典的所有key清空
2.4 字典方法--改
dict.update(dict2) #把字典dict2的键/值对更新到dict里
dic['key']='value'#同增
2.5 字典方法--查
dic['key']# 如果key不存在,则会报错,不推荐使用
dic.get('key')# 如果key不存在,则会返回None,推荐使用
dic.get('key','default')# 如果key不存在,则返回定义的默认值default。如果key存在,则返回原值
dic.values()#打印字典里的所有values
dic.keys()#打印字典里的所有keys
dic.items()#循环取key和value。不推荐使用,因为items是把字典转成List,再取值,效率比较低。推荐使用for key in dic。查看以下 字典高效取值
KEY in dict #判断KEY是否在这个字典中,返回True或False
3 字符串3.1 字符串
字符串不可变,即不能通过下标修改,但可以全部重新赋值
3.2 字符串方法
new_password = password.strip('.jpg') #去除首尾指定字符;默认去掉字符串两边的空格和换行符
print(password.lstrip())#截掉字符串左边的空格或指定字符
print(password.rstrip())#截掉字符串右边的空格或指定字符 print(password.upper())#转成大写的
print(password.lower())#转成小写的
print(password.capitalize())#把首字母改成大写的 print(password.count('jpg'))#指定字符串出现的次数
print(password.find('jpg'))#它找不到元素的时候,不会报错,会返回-1。如果有多个,返回第一个
print(password.index('jpg'))#找不到的时候会报错
print (password.isdigit()) # 判断是否为正整数
print (password.isspace()) # 判断是否全是空格,''不是空格 print(password.replace('谭爱玲','上山打老虎'))#替换字符串
print (name.replace('Abc','abe',2)) # 把前面Abc的值替换成后面的abe。不修改原name值。后面的数字表示替换几次,如2表示替换第1~2个值。 print(filename.endswith('.mp3'))#判断是否以xx结尾
print(filename.startswith(''))#判断是否以开头
print('{name},{age}'.format(name='hhh',age=age))#用于字符串的格式化输出
print('aa'.isidentifier())#是否是一个合法的变量名
print('aa'.islower())#是否是小写字母
print('AA'.isupper())#是否是大写字母
print('Loadrunner Book'.istitle())#是不是一个标题,判断首字母是否大写 print('+'.join(['hehe','haha','ee']))#拼接字符串 p = str.maketrans('abcdefg','')#前面的字符串和后面的字符串做映射 print('cc ae gg'.translate(p))#输出按照上面maketrans做映射后的字符串
#下面是反解
new_p = str.maketrans('','abcdefg') '''
用于给 translate() 方法创建字符映射转换表。
可以只接受一个参数,此时这个参数是个字典类型(暂不研究这种情况)
对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。
在Python3中可以有第三个参数,表示要删除的字符,也是字符串。
一般 maketrans() 方法需要配合 translate() 方法一起使用。
''' print('cc ae gg'.translate(new_p)) print('mysql is is db'.rfind('is'))#返回最右边字符的下标
print('1+2+3+4'.split('+'))#切割字符串,返回一个list
print('1+2+3\n1+2+3+4'.splitlines())#按照换行符分割
print('Abcdef'.swapcase())#大小写反转
print('acbe'.isalpha()) #只能是字母,都是字母才会返回True
print('acbe123'.isalnum()) #判断字符串里面有英文或者有数字。
3.3 string模块
#补充
import string print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)
print(string.punctuation)
print(string.ascii_letters)
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
运行结果
3.4 Python字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
| 操作符 | 描述 | 实例 |
|---|---|---|
| + | 字符串连接 | >>>a + b 'HelloPython' |
| * | 重复输出字符串 | >>>a * 2 'HelloHello' |
| [] | 通过索引获取字符串中字符 | >>>a[1] 'e' |
| [ : ] | 截取字符串中的一部分 | >>>a[1:4] 'ell' |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True | >>>"H" in a True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | >>>"M" not in a True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | >>>print r'\n' \n >>> print R'\n' \n |
| % | 格式字符串 | print("My name is %s and weight is %d kg!" % ('Zara', 21) ) |
4 元组4.1 元组
mysql = ('118.24.3.40',3306,'root','123456')
#元组也是一个不可变列表,元组不能修改
#元组定义
t1 = ('abc')
t2 = ('abc',) #只有一个元素时,要加逗号
print(type(t1))
print(type(t2))
<class 'str'>
<class 'tuple'>
运行结果







