一、列表(增、删、改、查)
1.列表的增加
append() | 在列表中追加某元素 |
insert() | 在列表中插入某元素 |
extend() | 在列表中追加某元素(具体区别看下面示例) |
a=['夏','商','周','秦','汉','隋','唐','宋','元','明','清']
a.append('民国') #默认插到最后一个位置
print(a) # ['夏', '商', '周', '秦', '汉', '隋', '唐', '宋', '元', '明', '清', '民国']
a.insert(3,'春秋') #将数据插入到任意一个位置
print(a) # ['夏', '商', '周', '春秋', '秦', '汉', '隋', '唐', '宋', '元', '明', '清', '民国']
c = [1, 2, 3]
d = [4, 5, 6]
e = [7, 8, 9]
c.extend(d)
print(c) # [1, 2, 3, 4, 5, 6]
c.append(e)
print(c) # [1, 2, 3, 4, 5, 6, [7, 8, 9]]
# extend和append区别
# 使用extend的时候,是将d看作一个序列,将这个序列和c序列合并,并放在其后面
# 使用append的时候,是将e看作一个对象,整体打包添加到c对象中。
2.列表的删除
函数 | 功能 |
remove() | 删除列表中指定元素 |
pop() | 删除列表中指定元素,不写参数默认删除最后一个 |
del | 删除后面跟的东西,具体看下面示例 |
a=['夏','商','周','秦','汉','隋','唐','宋','元','明','清']
a.remove(a[0]) #删除列表中第0个元素
print(a) # ['商', '周', '秦', '汉', '隋', '唐', '宋', '元', '明', '清']
b=a.pop(1) #把列表中第一个元素放入变量b中,如果pop中不填数字,默认最后一个
print(a) # ['商', '秦', '汉', '隋', '唐', '宋', '元', '明', '清']
print(b) # 周
del a[0] #删除第o个元素
print(a) # ['秦', '汉', '隋', '唐', '宋', '元', '明', '清']
del a #删除整个列表,连变量一起删除
print(a) # 因为删除了整张表,所以报错
3.列表的修改
a=['夏','商','周','秦','汉','隋','唐','宋','元','明','清']
a[1]='封神榜' #修改第一个位置的数据
print(a) # ['夏', '封神榜', '周', '秦', '汉', '隋', '唐', '宋', '元', '明', '清']
a[1:3]=['武王灭纣','烽火戏诸侯'] #修改第一个到第二个的内容(左包右不包)
print(a) # ['夏', '武王灭纣', '烽火戏诸侯', '秦', '汉', '隋', '唐', '宋', '元', '明', '清']
4.列表的查询
a=['夏','商','周','秦','汉','隋','唐','宋','元','明','清']
print(a[1:]) #从第1个取到最后
print(a[-1]) #取最后一个值
print(a[1:-1]) #开始,结束(左包右不包)
print(a[1:-1:2]) #开始,结束,步长
print(a[1::3]) #开始,步长(一直从开始位置,按照步长取到最后一个)
print(a[2::-1]) #开始,步长(取到最尽头)
print(a[-2::-1]) #开始,步长(从倒数第二个开始,从后往前一个一个取)
first = a.index('周') #index根据内容查找位置,有多个重复内容时,只会取第一个
print(first) # 2
list = a[first+1:] #搜索在list中,'汉'的位置
second = list.index('汉')
print(second) # 1
list1 = first + second + 3 #根据位置找内容
print(a[list1]) # 唐
5.列表操作的常用函数
函数 | 功能 | 用法 |
count() | 计算在列表元素出现的次数 | a.count("某元素") |
reverse() | 反向列表内容 | a.reverse() |
sort() | 给列表排序,里面可以添加一个参数reverse 当reverse=True时,为降序排列 当reverse=False时,为升序排列,默认False | a.sort(reverse=True) |
sorted() | 功能和sort一样,但是调用方式不同 | sorted(a) |
6.列表的亲戚——集合
列表中允许有重复的元素,但是集合中是不允许的,可以通过 set(list) 的方式将列表转换成集合,但是转换后,里面的重复元素会被直接干掉,集合的表示方式为:{},具体示例如下:
a = [1,1,1,1,1]
b = set(a)
print(b) # 输出:{1}
统计列表中不同元素的重复次数
from collections import Counter
aa=[1,2,2,3,2,4]
b = Counter(aa)
print(b) # Counter({2: 3, 1: 1, 3: 1, 4: 1})
二、字典
字典两大特点:无序,键唯一
1.字典的创建方式
#1.普通创建
a = {'name':'hello','age':18}
print(a) # {'name': 'hello', 'age': 18}
#2.动态分配键值
b = {}
b['name']=222
b['age']=19
print(b) # {'name': 222, 'age': 19}
#3.字典键值表
c=dict(name='hello',age=18,salary=3000)
print(c) # {'name': 'hello', 'age': 18, 'salary': 3000}
#4.字典键值元组表
d=dict([('name','333'),('age','456'),('salary','4000')])
print(d) # {'name': '333', 'age': '456', 'salary': '4000'}
#5.给所有键都赋予相同的初始值
e=dict.fromkeys(['name','age','salary'],'none')
print(e) # {'name': 'none', 'age': 'none', 'salary': 'none'}
2.字典操作
#1.键不存在,在字典中中增加新的键值对
dict2={'name':'abc'}
dict2.setdefault('hobby','basketball')
print(dict2) # {'name': 'abc', 'hobby': 'basketball'}
#2.查找
dict3={'name':'aaa','age':18,'hobby':'basketball','salary':'5000'}
print(dict3['name']) # aaa
print(dict3.values()) # dict_values(['aaa', 18, 'basketball', '5000'])
print(list(dict3.keys())) # ['name', 'age', 'hobby', 'salary']
print(list(dict3.items())) # [('name', 'aaa'), ('age', 18), ('hobby', 'basketball'), ('salary', '5000')]
#3.修改
dict4={'name':'aaa','age':18,'hobby':'basketball','salary':'5000'}
dict4['name']='hello'
print(dict4) # {'name': 'hello', 'age': 18, 'hobby': 'basketball', 'salary': '5000'}
#4.update
dict5={'name':'hello','age':28,'hobby':'none'}
dict6={'name':'aaa','age':18,'hobby':'basketball','salary':'5000'}
dict6.update(dict5) #把第五个表的数据更新到第6个表
print(dict5) # {'name': 'hello', 'age': 28, 'hobby': 'none'}
print(dict6) # {'name': 'hello', 'age': 28, 'hobby': 'none', 'salary': '5000'}
#5.清空字典
dict7={'name':'hello','age':28,'hobby':'none'}
dict7.clear()
print(dict7) # {}
#6.删除
dict8={'name':'hello','age':28,'hobby':'none'}
del dict8['name'] #删除字典中指定键值对
print(dict8) # {'age': 28, 'hobby': 'none'}
ret = dict8.pop('age') #删除字典中指定键值对,并返回该键值对的值
print(ret) # 28
dict9={'name':'hello','age':28,'hobby':'none'}
a = dict9.popitem() #随机删除某组键值对,并以元组方式返回值
print(a) # ('hobby', 'none')
print(dict9) # {'name': 'hello', 'age': 28}
del dict9 #删除整个字典
print(dict9) # 因为字典被删除,所以报错
三、字符串
1.String操作
# 1.重复输出字符串
print('hello'*20) # hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
# 2.通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表
print('hello world!'[2:]) # llo world!
# 3.关键字 in
print(123 in [23,45,123]) # True
print('123' in 'hello world!') # False
# 4.字符串拼接
a='123'
b='abc'
d='456'
c=a+b
print(c) # 123abc
c= ''.join([a,b,d])
print(c) # 123abc456
2.String的一些内置方法
st='hello world hello world \thello world azata bb cc d ee gg ##{name} {age}'
print(st.count('l')) # 统计元素个数
print(st.capitalize()) # 首字母大写
print(st.center(100,'$')) # 居中
print(st.endswith('aaa')) # 判断是否以某个内容结尾
print(st.startswith('he')) # 判断是否以某个内容开头
print(st.expandtabs(tabsize=20)) #返回一个字符串的副本。使原字符串中的制表符("\t")的使用空间变大。使用空格来扩展空间。
#语法: str.expandtabs(tabsize=8) —> str 返回字符串
#tabsize 的默认值为8。tabsize值为0到7等效于tabsize=8。tabsize每增加1,原字符串中“\t”的空间会多加一个空格。
print(st.find('l')) # 查找到第一个元素,并将索引值返回
print(st.format(name='123',age=456)) # 格式化输出的另一种方式 待定:?:{}
print(st.format_map({'name':'444','age':18}))
print(st.index('l'))
print('qgegaqrg'.isalnum()) #检测字符串是否由字母和数字组成
print('136546488'.isdecimal()) #字符串中的所有字符均为十进制字符
print('1847654699gagar'.isnumeric()) #检测字符串是否只由数字组成
print('abc'.isidentifier()) #检查字符串是否是有效标识符
print('Abc'.islower()) #检测字符串是否为小写
print('ABC'.isupper()) #检测字符串是否为大写
print('a d e'.isspace()) #检测字符串中的所有字符均为空格字符
print('Evsdfghsh'.istitle()) #检查一个字符串中的每个单词开头字母是否为大写,而其它字符都为小写形式
print('GESGKHBUKH'.lower()) #将字符串全部转化为小写
print('gqrEDFSadsf'.upper()) #将字符串全部转化为大写
print('aaaa'.swapcase()) #将字符串全部转化为大写
print('aaaaa'.ljust(50,'*')) #字符串在前,用*号填充够50个(总共)
print('aaa bbb'.rjust(50,'*')) #字符串在后,用*号填充够50个(总共)
print('\tMy tLtle\n'.strip()) #移除字符串头尾指定的字符(默认为空格)或字符序列
print('\aaa bbb\n'.lstrip())
print('\aaa bbb\n'.rstrip())
print('aaa bbb ccc'.replace('bbb','lesson',1)) #把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次
print('aaa bbb bbb'.rfind('c'))
print('aaa bbb ccc'.split('b',5)) #通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
print('aaa bbb ccc'.title()) #开头大写
3.String的常用函数
函数 | 功能 |
---|---|
isalnum | 判断字符串是否完全由字母或数字组成 |
isalpha | 判断字符串是否完全由字母组成 |
isdigit | 判断字符串是否完全由数字组成 |
isupper | 判断字符串中的字母是否完全大写 |
islower | 判断字符串中的字母是否完全小写 |
istitle | 判断字符串是否满足title格式 |
isspace | 判断字符串是否完全由空格组成 |
startswith | 判断字符串的开头字符,也可以先截取再判断 |
endswith | 判断字符串的结尾字符,也可以先截取再判断 |
split | 字符串分割 |
replace | 将字符串中的内容进行替换 |