Python基础数据类型:字符串,列表,元组,集合,字典用法总结

重点:
在python中,整形、字符串和元组。是不可改变数据类型
字符串、列表、元组、集合可以直接使用for,字典需要根据key或者value遍历

字符串

1、字符串下标

st="zxcvbnm"
print(f'st的类型为:{type(st)}')
print(st[0])
print(st[2])
print(st[4])
print(st)

不可以直接通过下标直接改变字符串里面的元素,但是可以通过下标读取。简单点记忆就是可读不可写
运行结果:

st的类型为:<class 'str'>
z
c
b
zxcvbnm

2、字符串的切片

 序列名[开始位置的下标:结束位置的下表:步长]
 取值区间左闭右开的

str1 = '012345678'
print(str1[2:5:1])
print(str1[2:5:2])
print(str1[2:5])  # 如果不写步长,默认步长是1
print(str1[:5])   # 如果不写开始,默认从0开始选取
print(str1[2:])  # 如果不写结束,表示选取到最后
print(str1[:])  # 如果不写开始和结束,表示选取所有

运行结果:

234
24
234
01234
2345678
012345678

str1 = '012345678'
print(str1[::-1]) # 如果步长为负数,表示倒叙选取
print(str1[-4:-1]) # 下标为-1表示最后一个数据,依次向前类推
print(str1[-4:-1:1])
print(str1[-4:-1:-1]) # 不能选取出数据:从-4开始到-1结束,选取方向从左到右,但是-1步长:从右向左选取
print(str1[-1:-4:-1]) # 876 方向一致就可以正确输出# 如果选取方向(下标开始到结束的方向)和步长方向冲突,则无法选取数据

运行结果:

876543210
567
567

876

当为负数的时候要注意方向问题
0 1 2 3 4 5 6 7 8
比如print(str1[-4:-1])
-4对应的数字是字符串中的5,-1对应的数字是字符串中的8,步长是1。整体方向是从左到右,即是5 6 7
.
print(str1[-4 :- 1:-1])再看这句,-4对应5,-1对应8,方向是从左到右(---->),步长是-1,方向是从右至左,这两个方向相反,所以输出不了任何东西
.
print(str1[-1:-4:-1]) ,-1对应的是8,-4对应的是5,方向是从右至左(<—),步长是-1,方向也是从右至左,两个方向相同所以是876,注意左边区间是-1,对应的是8,右边区间是5,根据左闭右开,所以是876没有5

3、字符串的查找

mystr = 'hello world and itcast and itsmail and Python'
#基本上记住一个find就行了
# 1. find()
print(mystr.find('and')) # 输出的是12,以为下标是从0开始数的
print(mystr.find('and',15,30))
print(mystr.find('ands')) # -1,ands字串不存在

# 2. index
print(mystr.find('and')) # 12
print(mystr.find('and',15,30)) #23
#print(mystr.index('ands')) #如果index查找字串不存在,报错

# 3. count()
#count() 方法用于统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。
print(mystr.count('and')) #3
print(mystr.count('and',15,30)) # 1
print(mystr.count('ands'))# 0

# 4. rfind()
#rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
print(mystr.rfind('and')) #35
print(mystr.rfind('ands')) #-1 如果没找到,则返回-1

# 5. rindex()
#返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,
#你可以指定可选参数[beg:end]设置查找的区间。
print(mystr.rindex('and'))# 35  就算是到着找,它的下标还是从左到右从下标0开始的
#print(mystr.rindex('ands'))

4、字符串的修改

字符串是不可修改的数据类型,那么我们要如何修改字符串呢?
备份啊,简单点理解就是给原字符串复制一份,在复制数据的过程中修改要复制的元素,最后形成一个新的字符串(这样理解是有点问题。。。。不过,问题不大!!!哈哈哈)

str1 = " aaa bbb ccc ddd aaa bbb ccc ddd eee fff aaa"
#将字符串中的所有aaa全部替换成111
str2 = str1.replace("aaa","111")
print(f"str1: {str1}")
print(f"str2: {str2}")
print()
#将字符串中第一个aaa替换成111
print(f"str1: {str1}")
str3 = str1.replace("aaa","111",1)#如果次数超过字符串中子字符串的个数,将全部替换
print(f"str3: {str3}")
print()
#将列表里面元素合并成字符串
mylist = ['aa','bb','cc']
new_str4 = '...'.join(mylist)
print(new_str4)
print(type(new_str4))

运行结果:

str1:  aaa bbb ccc ddd aaa bbb ccc ddd eee fff aaa
str2:  111 bbb ccc ddd 111 bbb ccc ddd eee fff 111

str1:  aaa bbb ccc ddd aaa bbb ccc ddd eee fff aaa
str3:  111 bbb ccc ddd aaa bbb ccc ddd eee fff aaa

str1:  aaa bbb ccc ddd aaa bbb ccc ddd eee fff aaa
str4: [' ', ' bbb ccc ddd ', ' bbb ccc ddd eee fff ', '']
aa...bb...cc
<class 'str'>

5、字符串的拼接

str5=str1+str2
print(str5)

列表

st=[1,2,3,'s','zxcvb']
print(f'st的类型为:{type(st)}')
print(st)
print(st[4])
st[4]=4
print(st)

运行结果:

st的类型为:<class 'list'>
[1, 2, 3, 's', 'zxcvb']
zxcvb
[1, 2, 3, 's', 4]

元组

st=(123,456,789,'s',"zxcvbnm")
print(f'st的类型为:{type(st)}')
print(st[0])
print(st[1])
print(st[2])
print(st)

运行结果:

st的类型为:<class 'tuple'>
123
456
789
(123, 456, 789, 's', 'zxcvbnm')

注意:元组中只有一个元素其后面必须加逗号,否则类型不确定

sr=(1,)
如果写成sr=(1)那么sr就不是元组类型,变成了int类型

集合

1、集合打印内容是无序的

st = {'感谢','你','阅读','我的','博客'}
print(st)

运行结果:

{'你', '阅读', '博客', '感谢', '我的'}

2、自动去重,集合会自动去除其中重复的元素

st = {1,2,3,3,3,5,7,4,999,245}
print(st)

运行结果:

{1, 2, 3, 4, 5, 7, 999, 245}

3、集合中添加元素 xxx.add(xxx)

st = {1,3}
st.add(999)
print(st)

运行结果:

{1, 3, 999}

4、集合中删除元素
4.1 随机删除一个元素 xxx.pop()

st = {1,3,5,7,9}
st.pop()#随机删除集合中的一个元素
print(st)

运行结果:

st = {1,3,5,7,9}
st.pop()
print(st)

4.2 指定删除某个元素 xxx.remove(xxx)

st = {1,3,5,7,9}
st.remove(9)#指定删除集合中的一个元素,如果指定元素不存在会报错
print(st)

运行结果:

{1, 3, 5, 7}

4.3 指定删除某个元素 xxx.discard(xxx)

st = {1,3,5,7,9}
st.discard(9) #discard用法和remove一样,不过如果指定的元素不存在不会报错
st.discard(100)
print(st)

运行结果:

{1, 3, 5, 7}

5、集合运算
5.1 集合间的交集 xxx.intersection(xxx)


普通取交集方式

st=[1,2,3,4,5,6,7]
lp=[1,2,3,]
sr=[]
for a in st:
    if a in lp:
        sr.append(a)#append函数用于列表的元素追加
print(sr)

运行结果:

[1, 2, 3]

集合间取交集方式

st={2,4,6,8,10}
lp={6,8}
sr = st.intersection(lp) #方式一
print(sr)
sp=st&lp #方式二
print(sp)

运行结果:

{8, 6}
{8, 6}

5.2 集合间的并集 xxx.union(xxx)

st={1,2,3,4,5}
lp={6,7,8,9}
sr = st.union(lp) #方式一
print(sr)
sp=st | lp #方式二
print(sp)

运行结果:

{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}

5.3 集合间的差集 xxx.difference(xxx)
差集:简单来说就是我有的,你没有的

st={1,2,3,4,5}
lp={1,7}
sr = st.difference(lp) #方式一
print(sr)
sp=st-lp #方式二
print(sp)

sr = lp.difference(st)
print(sr)
sp=lp-st
print(sp)

运行结果:

{2, 3, 4, 5}
{2, 3, 4, 5}
{7}
{7}

5.4 集合间的交叉补集xxx.symmetric_difference(xxx)
交叉补集:我有的你没有的+你有的我没有的

st={1,2,3,4,5}
lp={1,7}
sr = st.symmetric_difference(lp) #方式一
print(sr)
sp=lp^st #方式二
print(sp)

运行结果:

{2, 3, 4, 5, 7}
{2, 3, 4, 5, 7}

字典

遍历key值

st={'a':1,'b':2,'c':3,'d':4}
for key in st.keys():
    print(f'{key}:{st[key]}')

运行结果:

a:1
b:2
c:3
d:4

遍历value值

st={'a':1,'b':2,'c':3,'d':4}
for value in st.values():
    print(value)

运行结果:

2
3
4
未更新完,会持续更新的。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值