索引
索引是一个用于定位数据集合中元素的标记,是一个整数。从0开始,到长度-1结束。(第一个元素索引为0,第二个元素索引为1...左后一个元素索引为长度-1)
字符串
索引取值
name = 'abcde'
# 取出第一个字符
print(name[0])
# 取出最后一个字符
print(name[4])
print(name[-1])
切片
查找字符串中的一段值[起始值:终止值:步长] (顾头不顾尾)
srt1 = 'hello world'
# 默认步长为一
print(str1[0:5])#取出索引为0到4的字符,索引为5的取不出来
print(str1[0:5:2])#走两步取一个取出索引为0 2 4的字符
# 倒着取
print(str1[::-1])
计算长度 len
print(len(str1))
成员运算 (in,not in)
判断一个子字符串是否存在于一个大的字符串中,返回布尔类型 True False
print('dkl' in 'dklaaa') # True
print('dh' not in 'dahaa' ) #False
字符串拼接
# 这是两个字符串 他们在一行打印
print('dmli','dop')
# 字符串拼接
# 这是一个字符串
print('dmli'+'dop')
占位符
format
# {}是一个占位符,给format()里的字符占位
print('my name is {}'.format('阿萨'))
print('my name is {},my age is {}'.format('阿萨',18))
# 占位符{}里可以放索引
print('my name is {1},my age is {0}'.format(18,'阿萨'))
f''/f""
i = 'as' a = 18
print(f'my name is {i},my age is {a}')#也可以 f''与f'的用法一样
join
把一个列表里面的字符串拼接起来
str1 = '真正的勇士'
str2 = '敢于直面惨淡的人生'
str3 = '敢于正视淋漓的鲜血'
list1 = [str1,str2,str3]
print(list1)
print(''.join(list1))
print(','.join(list1))
print(','.join(str1))
'''
输出
['真正的勇士', '敢于直面惨淡的人生', '敢于正视淋漓的鲜血']
真正的勇士敢于直面惨淡的人生敢于正视淋漓的鲜血
真正的勇士,敢于直面惨淡的人生,敢于正视淋漓的鲜血
真,正,的,勇,士
'''
因为字符串是不可变类型,所以要重新赋值,改后的值是一个新值
字符串字母全部变小写和大写 lower,upper
msg1 = 'asDfG'
print(msg1.upper())
print(msg1.lower())
a = msg1.lower()
print(a)
把第一个字母转换成大写 capitalize
letter = 'asdf'
print(letter.capitalize())
letter1 = letter.capitalize()
print(letter1)
把字符串切分成列表 从而进行取值 split 默认遇到空格切分
msgg1 = 'hello world python'
print(msgg1.split())
a = msgg1.split()
print(a)
#切分成列表后可以按照索引取值,取值更方便
print(msgg1.split()[1])
#可以按自己喜好进行切分,以下是遇到*切分,再按照索引取值,取出索引为2的
msg1 = 'hello*world*python'
print(msg1.split('*')[2])
替换
replace(存在的字符,新的字符,个数)默认替换全部
msg2 = 'dsafgazxa你好'
print(msg2.replace('你','我'))
msg3 = msg2.replace('你','我')
print(msg3)
print(msg2.replace('a','z'))
print(msg2.replace('a','z',1))
去掉字符串左右两边的字符,默认去掉字符串两侧的空格 strip
不管中间的字符
注意:strip()括号里的字符只能是两边的字符,如果不是就输出原值
a = ' a s '
print(a)
print(a.strip())
# 默认去掉两边的空格
a = 'as xcv mn op '
# 去掉两边的a
print(a.strip('a'))
a = 'as xcv mn op '
# 去掉两边的op
print(a.strip('op'))
多余添加自己想要的字符 center ljust rjust
#da放中间,*补充 一共11歌字符
print('da'.center(11,'*'))
#da放中间,*补充 一共12歌字符
print('da'.center(12,'*'))
#da放左边,一共10个字符,/补充
print('da'.ljust(10,'/'))
#da放右边,一共15个字符,+补充
print('da'.rjust(15,'+'))
查找子字符串在大字符串的位置(起始索引)
find方法不适用于列表
#find 没找到返回-1,不会报错
a = 'asdfg zxc cv'
print(a.find('zx'))
b = 'd'
print(a.find(b))
print(a.find('e'))
#index 没找到会报错
a = 'asdfg zxc cv'
print(a.index('zx'))
b = 'd'
print(a.index(b))
print(a.index('e'))
统计一个子字符串在大字符串中出现的次数 count
a = 'asdfg zxc cxxv'
print(a.count('x'))
判断一个字符串里的数据是不是都是数字 isdigit 返回布尔值
a = '154'
b = '145a'
print(a.isdigit())
print(b.isdigit())
判断每个字符是不是都是字母 isalpha 返回布尔值
a = 'aszx'
b = '14as'
print(a.isalpha())
print(b.isalpha())
如果字符串里全是数字 可以转换成整形 int 变成真正的数字
n = '111'
print(type(n))
print(type(int(n)))
比较开头元素是否相同startswith 比较结尾元素是否相同endswith 返回布尔值
z = 'asdzxc zvb'
print(z.startswith('as'))
print(z.startswith('zx'))
print(z.endswith('vb'))
print(z.endswith('as'))
判断字符串中的值是否全是小写 islower, 判断字符串中的值是否全是大写 isupper 返回布尔值
letter1 = 'aSX'
letter2 = 'zxc'
letter3 = 'ASD'
print(letter1.isupper())
print(letter1.islower())
print(letter2.islower())
print(letter2.isupper())
print(letter3.isupper())
print(letter3.islower())
字符串的转义,加了 \ 字符不再表示它本身的含义 常用的有 \n 竖向换行符 \t 横向换行符
print('hello\npython')
#横向换行符 相当于一个tab
print('hello\tpython')
反转义
#第一种,转义字符前再加一个 \ ,每个转义字符前都要加
print('hello\\npython')
print('hello\\tpython')
#第二种,在整个字符串前加一个 r 只要在前面写一次
print(r'hello\npython hello\tpython')
布尔类型
不仅仅是真假,还是 有True 无False
所有的数据类型都自带布尔值None,0,空(空字符串,空列表,空字典),三种情况下布尔值为False其余均为真(空格也是字符,不是空)
print(bool('as'))
print(bool(''))
列表类型
增
append
在列表末尾添加元素
L = ['da',1,1.2,[1.22,'小']]
L.append('kl')
print(L)
extend(列表)
在列表里添加多个元素 括号里放列表 末尾追加
L.extend(['蓝','紫'])
print(L)
insert(索引,元素)
在指定索引前插入一个元素
L.insert(2,'蓝海')
删除
L = [4,8,9,'sd','io','op'[8,9,'hj']]
del
删除整个列表
del L
索引删除指定元素
del L[1]
remove
从左边删除,一次删除一个
L.remove('io')
pop
从列表中拿走一个值,按照索引拿走,默认拿走最后一个
res1 = L.pop()
print(L)
print(res1)#拿走的值归他
按照索引拿走
res2 = L.pop(2)#拿走索引为二的给res2 不是元素2
print(L)
print(res2)
clear
清空列表 不删除列表
L.clear()
print(L)
sort排序 对数字
list_num = [1,6,2,5,9]
list_num.sort()
print(list_num)
#print(list_num.sort())不可行
#默认是正序相当于如下 默认参数是 reverse=False
list_num.sort(reverse=False)
print(list_num)
#倒叙
list_num.sort(reverse=True)
print(list_num)
元组
改
(不可变类型,不能修改)如果想要修改元组,可以将元组转换成列表类型,再进行修改,再变回元组类型 .
t = (1,2,'kl',(2,3),['op',2,3])
t1 = list(t)
print(t1)
t1[3]=5
t=tuple(t1)
print(t)
查
与列表一样 索引,切片,长度 len,个数count查找元素索引index (find方法不适用),成员运算 in not in
字典
生成字典的方式
info = {'name':'大海','age':18}
dic = dict(x=1,y=2)
print(dic)
print(type(dic))
增
info['addr']='长沙'
print(info)
print(id(info))
长度len 字典的键值对对数
成员运算
in not in 判断的是key 返回布尔值
info = {'name':'海','age':18}
print('海' in info)
print('name' in info)
删
#清空字典clear
info = {'name':'阿萨','age':18}
info.clear()
print(info)
#del 按照key删 不存在的key会报错
del info['name']
#pop 拿走value 不存在的key会报错 返回值是value pop()里不能是索引
info = {'name':'阿萨','age':18}
info2 = info.pop('name')
print(info)
print(info2)#value给他
#popitem z最后一对键值对删除,字典无序 返回的是一个元组
info = {'name':'阿萨','age':18}
res1=info.popitem()
print(info)
print(res1)#是一个元组(key,value)
改
#直接改
info = {'name':'阿萨','age':18}
info['name']='撒'
info = {'name':'阿萨','age':18}
info.update({'name':'xiaohai'})
print(info)
'''setdefault 有则不动,返回原值 无则添加,返回新值
字典中已经存在key则不修改,返回已经存在的key对应的value'''
#字典不存在key则添加,返回新的value
res2=info.setdefault("sex","male")
print(info)
print(res2)
查
#不存在的key会报错
info = {'name':'执行','age':18}
print(info['name'])
#没有key就返回None,不会报错
print(info.get('name'))
取
# 取出所有的key
print(list(info.keys()))
# 取出所有的value
print(list(info.values()))
# 取出所有键值对
print(list(info.items()))
集合
集合里面的元素必须是不可变类型
增
s = {'a',1,'aa',('aaa','z',1)}
#增 add
s = {1,2,'a'}
s.add('d')
print(s)
删
#pop 从第一个元素删除
s = {1,2,3,'s'}
s1=s.pop()
print(s)
print(s1)#拿走的给他
#指定删除 remove
s.remove(2)#括号里是元素,不是索引
改
#改 update 说不定加到哪
s = {1,2,3,'s'}
s.update(['蓝海','zihai'])
print(s)
集合转换成列表再修改,再变换成集合
s = {1,2,3,'s'}
s1=list(s)
print(s1)
s1[0]='dd'
s=set(s1)
print(s1)
集合去重
有局限性
1.无法保证原数据类型的顺序
2.当某一个数据中包含的多个值全部为不可变类型时才能用集合去重
s1 = [1,2,3,'s',2,5,3,2,5,'s',8]
s=set(s1)
l=list(s)
print(l)