3.字符串、列表、元组、字典操作

1. 序列:一组按照顺序排序的值
2. 序列类型:字符串、元组、列表,字典不是序列
3. 优点:可以支持索引和切片的操作
4. 特征:第一个正索引为0,指向的是左端,第一个索引为负数的时候,指向的是右端
5. 切片:【高级特征】 可以根据下标来获取序列对象的任意{部分}数据
6. 语法结构:数据名[start:end:步长step]

一、字符串------不可变数据类型

# 字符串输出---可部分输出,也可以遍历(切片)
Test='python'
print(type(Test))
print('获取第一个字符%s'%(Test[0]))
print('获取第二个字符%s'%(Test[1]))

# for循环遍历
for item in Test:         #i得到的是数据项,不是索引下标
    print(item,end=' ')      

name='peter'
print('首字母变成大写%s'%name.capitalize())


#去除空格
a='      Hello    '
b=a.strip()    # 删除两边的空格
print(b)
print(a)
print(a.strip())
print('删除左边的空格:%s'%a.lstrip())
print('删除右边的空格:%s'%a.rstrip())

#复制一个字符串(相当于赋值)
a='python'
b=a    # 在此只是把a的内存地址赋给了b
print(b)
print('a的内存地址:%d'%id(a))   #id()  可以查看一个对象的内存地址
print('b的内存地址:%d'%id(b))   #b=a时,他们的内存地址一样

#查找某个字符存在不存在  .find() 或者  .index() 或者print(对象 in 字符串)----输出bool类型
datastr='I Love PythoPn'
print(datastr.find('o'))    #.find() 查找目标对象在序列对象中  首次出现 的位置(从左到右)
print(datastr.find('m'))     #如果没有找到的情况下,返回-1
print(datastr.index('L'))   #.index() 查找目标对象在序列对象中  首次出现 的位置(从左到右)
print(datastr.index('m'))    #index() 也可以用于检测字符串中是否包含字符
# .index() 没有找到时报错   .find() 返回-1

# 是否以X结束/开始  .startswith()/.endswith()
datastr='I Love PythoPn'
print(datastr.startswith('I'))   #True
print(datastr.startswith('Io'))   #False
print(datastr.endswith('n'))    #True

# 大小写转换     .lower()/.upper()
datastr='I Love PythoPn'
print(datastr.lower())
print(datastr.upper())

strMsg='hello world'
# slice[start:end:step]   左闭右开  start<=value<end
print(strMsg)  #输出完整数据
print(strMsg[0])
print(strMsg[2:5])   #输出2-5【下标】之间的数据,不包括5,234
print(strMsg[2:])   #输出2之后的内容,没有结束就不用写end
print(strMsg[0:3])   #输出【第一个(下标0)到第三(下标2)个字符】
print(strMsg[:3])    #strMsg[0:3]=strMsg[:3]
#  倒序输出
print(strMsg[::-1])    #负号 表示从右边开始输出,倒序
.endswith()/.startswith()是否以X结束/开始
.isalnum()判断是否是字母和数字
.isalpha()判断是否是字母
.isdigit()判断是否是数字
.islower()判断是否是小写
.join()循环取出所有值,用xx去连接
.lower()/.upper()大小写转换
.swapcase()大写变小写,小写变大写
.lstrip()/.rstrip()/.strip()移除左右 两侧空白
.split()切割字符串

.title()

把每个字母的首字母都变成大写
.replace(old,new,count=None)old被换字符串,new替换字符串,count换多少个,没有count全部换
.count()统计出现次数

 二、列表-----可变数据类型

list:  python 当中非常重要的数据结构,是一种有序的数据集合                                                      特点: 1.支持增删改查                                                                                                                                  2.列表中的数据是可以变化的【数据项可以变化,这个列表的内存地址不会改变-可变数据类型                                                                                                                                                                3.用[ ]来表示列表类型,数据项之间用逗号分隔,注意:数据项可以是[任何类型的数据]                  4.支持索引和切片来来操作                                                                                                                5. 可以通过for循环来遍历列表中的数据

# 定义一个列表
li=[1,2,3,'你好']   #这个列表 有四个数据项,整形和字符串
print(len(li))    #len()可以获取到列表对象中的数据个数
strA='我喜欢python'
print(len(strA))
print(type(li))

#---------for循环遍历 列表----------
listA=[1,2,3]
for item in listA:
   print(item)

#----------增加-----------
#append() 追加列表--在列表结尾后继续加
listA=['abcd',785,12.23,'qiuzhi',True]
print('追加之前',listA)
listA.append(['fff','ddd'])
listA.append(6666)
print('追加之后',listA)

#.insert(下标位置,插入内容)  列表中插入数据
listA=['abcd',785,12.23,'qiuzhi',True]
listA.insert(1,'这是刚刚插入的数据')  #插入操作 需要执行一个位置的插入
print(listA)    #使新数据位于某个下标

#强制转换成list数据
listA=['abcd',785,12.23,'qiuzhi',True]
print(range(10))
rsData=list(range(10))   #强制转化为list数据
print(type(rsData))

# 让listA批量的  追加  列表对象rsData
#   .extend()   拓展函数=批量添加
listA.extend(rsData)
print(listA)
listA.extend([1,2,3])
print(listA)

#--------查找:切片(在支持索引前提下)---------
listA=['abcd',785,12.23,'qiuzhi',True]
print(listA)  #获取完整的列表
print(listA[0])  #输出第一个元素
print(listA[1:3])  #输出第二个元素到地三个元素
print(listA[1:5])   #从第二个元素开始输出到最后
print(listA[2:])   #从第二个元素开始输出到最后
print(listA[::-1])   #倒序输出
print(listA*2)     #连续 多次 输出,相当于 [复制]


# -----------删除list数据项-----------
listB=list(range(10,50))
print('删除之前:',listB)
del listB[0]    #删除列表中的第一个元素
print('删除之后:',listB)
del listB[1:3]   #批量删除多项数据:删除列表中的第2、3个元素
print('删除之后:',listB)

listB.remove(20)    #移除指定的元素20,不是下标20
print('移除之后:',listB)

listB.pop(1)  #移除指定的项,指的是下标
print('移除之后:',listB)


# -----------修改-----------
listA=['abcd',785,12.23,'qiuzhi',True]
print('修改之前',listA)
listA[0]=333.6    #修改就是直接 重新赋值
print('修改之后',listA)

# -----------查找元素位置-----------
print(listB.index(19))    #查找元素位置,返回的是一个索引下标
print(listB.index(19,20,25))    #查19,从20开始查,查25个元素(查不到)

.append()    在列表后面追加【元素】,可多可少
 .insert()     在指定位置插入,数字代表要替换的【下标】
 .extend()     扩展,相当于批量添加【列表】
 .index(19)    获取指定元素19的索引号【下标】
 .count()      统计元素出现的次数
 del listB[0]
 del listB[1:3]   批量删除多项数据
 .pop(1)  移除指定索引下标的数据项
 .pop()     删除最后一个元素
.remove(20)    移除指定的元素20,不是下标20
 .remove()     移除左边找到的第一个元素
 .reserve()     反转列表
 .sort()    列表排序
 listA[0]=333.6   给列表中某一项重新赋值

三、元组------可变数据类型

1.是一种不可以修改、不可变的序列,不能做任何修改                                                                   2.用() 创建元组类型,数据项用逗号来分割                                                                                3.可以是任何类型                                                                                                                                4.当元组中只有一个元素时,要加上逗号,不然解释器会当作整形来处理                                        5.同样可以支持切片操作                                                                                                                     6. 可以遍历(for),读取,不能增删改 7.当元组中只有一个数据时,要在后边加 逗号,否则就是整形

# -------元组的创建---------
# 元组不能修改,不能对它进行 增删改,只能对他进行【查找,获取】

tupleA=()         #空元组
print(type(tupleA))

#-------元组的查找-------
tupleA=('abc',89,9.12,'peter','[11,22,33]')
print(id(tupleA))   # 元组里的数据项不同,存储地址也不同

#-------for 遍历元组中的数据项-------
for item in tupleA:
    print(item,end=' ')

print(tupleA[2])   #可以通过切片进行查找
print(tupleA[2:4])
print(tupleA[::-1])    # 倒序,隔一个取一个
print(tupleA[::-2])     # 倒序,隔两个取一个
print(tupleA[::-3])      # 倒序,隔三个取一个
print(tupleA[-2:-1:])    #从-2开始,到-1前结束
print(tupleA[-4:-2:])

 #-------元组不支持修改-------
tupleA[0]='python'  #重新赋值=修改:报错'tuple' object does not support item assignment

#-------可以对元组中的【列表】进行修改-------
tupleA=('abc',89,9.12,'peter',[11,22,33])
tupleA[4][0]=289384        #tupleA[4]是列表,可以修改
print(tupleA)      #修改的是 元组 中的 列表里的数据项
print(type(tupleA[4]))

tupleB=(1,)    # 当元组中只有一个数据时,要在后边加 逗号,否则就是整形
print(type(tupleB))
print(tupleB)

tupleC=tuple(range(10))  #强制转换为tuple类型
print(tupleC.count(8))    #统计元组中出现了几个 8
tupleC=(1,2,2,2,3,4,5,)
print(tupleC.count(2))

四、字典--------可变数据类型

也是python中重要的数据类型,字典是有【键值对】组成的集合,通常使用键来访问数据,效率非常高,和list一样,支持对数据的增加、删除、修改。不是序列,被支持索引来切片 
特点: 
1.不是序列类型 没有下标的概念----不能用索引,是一个无序的 键值集合,是[内置的高级数据类型] 2.用{}来表示 字典对象,每个键值对用逗号分割 
3.键 必须是不可变类型【元组、字符串、整形(一旦变化,存储地址变化,相当于另一个对象),但是不可以是列表,集合,字典。】 值 可以变化 
4.每个键必须是唯一的,如果存在重复的键,后者会覆盖前者
# -----在字典里添加数据-------
dictA={'pro':'艺术','school':'北京电影学院'}
dictA['name']='李易峰'   #键key:name  value:李易峰,输出:{'name': '李易峰'}
dictA['age']=30
dictA['pos']='歌手'
print(len(dictA))
print(dictA)    #输出完整的字典

#----- .update(键值对) 更新某个键的值/增加键值-------
#.update() 函数用于【更新】键的值 或者 【增加】新的键和值
dictA.update({'age':'32'})   #修改age的值
print(dictA)

dictA.update({'height':178})   #增加键值 {’heiht‘:178}
print(dictA)

#-----通过键获取完整的值-------
#数据项的查找(用键来获取对应的值)
print(dictA['name'])    #通过键获取完整的值

#-----修改键对应的值-------
dictA['name']='谢霆锋'    #修改字典键name对应的值
print(dictA)
dictA['school']='香港大学'
print(dictA)

#-----获取某个键、值或者所有键和值-------
获取所有的键
print(dictA.keys())    # .keys()
获取所有的值
print(dictA.values())    # .values()
获取所有的键和值
print(dictA.items())

for item in dictA.items():
    print(item)

for key,value in dictA.items():
    print('%s==%s'%(key,value))

#-------------删除----------------
del dictA['name']
print(dictA)

dictA.pop('age')
print(dictA)


#------对字典进行排序-----
print(dictA)
# 按照键key来排序
print(sorted(dictA.items(),key=lambda d:d[0]))
#  dictA.items()指所有数据(键和值),按key排序,
# 按照键value来排序
print(sorted(dictA.items(),value=lambda d:d[0]))  #报错,值的类型不一致

五、字符串、列表、元组、字典 共有方法( + * in)

#-------------字符串合并---------
strA='人生苦短'
strB='我爱python'
print(strA+strB)
#-------------列表合并------------
listA=list(range(10))
listB=list(range(10,20))
print(listA+listB)
#-------------元组合并-------------
tupleA=(1,2,3,4)
tupleB=tuple(range(10,16))
print(tupleA+tupleB)
#—-------------字典合并(不支持)-------------
dictA={'one':1,'two':2,'three':3}
dictB={'seven':7,'ten':'pyhton'}
print(dictA+dictB)


#-------------复制   *-------------
strA='人生苦短'
listA=list(range(10))
tupleA=(1,2,3,4)
dictA={'one':'1','two':'2','three':'3'}
print(strA*3)
print(listA*3)
print(tupleA*3)
print(dictA*3)     #不支持


#----------   in   判断对象是否存在,结果是bool类型的值------
strA='人生苦短'
print('生'in strA)    #true
print('我'in strA)     #false
listA=list(range(10))
print(22 in listA)   #false
dictA={'name':'peter'}
#判断键
print('age'in dictA)    #判断键false
print('name'in dictA)    #true

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值