Python学习笔记Ⅲ —— 字符串、列表 、字典 、元组 、集合

本节内容:1.字符串常见操作 2.列表 3.字典 4.元组 5.集合

1.字符串的常见操作

1.1 获取字符串的数据

上一节已经学习了如何使用字符串的下标,那么我们现在可以利用下标和字符串的一些方法实现一些操作。

my_str = 'hello world'
# 1.获取字符串中指定数据的下标

#index和rindex
print(my_str.index('l'))     #index:按照字符串从左到右的顺序寻找指定字符'l',并返回找到的第一个'l'的下标
print(my_str.rindex('l'))    #index:按照字符串从右到左的顺序寻找指定字符'l',并返回找到的第一个'l'的下标
#print(my_str.index('a'))     #当index在字符串中找不到指定数据时,将会报错

#find和rfind,与index、rindex用法几乎一样,区别在于当find找不到指定内容时会返回-1而不是报错。
print(my_str.find('l'))
print(my_str.rfind('l'))
print(my_str.find('a')) 

# 2.字符串的“修改”-----------字符串为不可变类型,故所有操作都只是生成了一个新的数据(字符串、列表等)
print(my_str.count('l'))     #count用来查找字符串中指定内容的数量  

my_str2 = my_str.replace('l','x',1)   #replace中第三个参数即替换的个数,入如果不传参数默认全部替换
print(my_str,my_str2)                 #replace并不能修改my_str,而是生成了一个新的字符串,所以my_str中的数据没有发生改变


print(my_str.split(' '),my_str)       #split将以指定的内容,将字符串分割后返回存储在列表中返回,同样的my_str不会改变
print(my_str.partition(' '))          #partition与split的区别:partition将指定内容作为分割后的列表元素存储,而split不保存指定内容
print(my_str.splitlines())			  #splitlines:以换行符\n进行分割

print(my_str.capitalize())			  #capitalize:字符串首字母大写
print(my_str.title())				  #title:字符串中所有单词首字母大写
print(my_str.upper())				  #upper:字符串所有字母转大写
print(my_str.lower())				  #lower:字符串所有字母转小写

#3.判断字符串内容------------提到判断,输出的一般都为布尔值 True or Flase
print(my_str.isalpha())				  #判断字符串是否由纯字母组成
print(my_str.isdigit())				  #判断字符串是否由纯数字组成
print(my_str.isalnum())				  #判断字符串是否由字母和数字共同组成

1.2字符串的遍历与枚举

字符串的遍历使用for循环即可实现,但如果想同时获取下标就要用到enumerate进行枚举。

my_str = 'hello world'

# 1.遍历字符串
str_list1 = [value for value in my_str]
print(str_list)

# 2.枚举字符串
str_list2 = [(index,value) for index,value in enumerate(my_str)]
print(str_list2)

1.3字符串的拼接

我们经常要用将几个字符串连起来使用或输出,最常用的三种方式为:1.使用 + 拼接;2.使用格式化输出进行拼接;3.使用{}占位符拼接

my_str1 = 'hello'
my_str2 = 'world'

# 1.使用 + 拼接
result = my_str1 + my_str2
print(result)

# 2.使用格式化输出进行拼接
result = '%s'%(my_str1+my_str2)
print(result)

# 3.使用占位符进行拼接
result = '{}{}'.format(my_str1,my_str2)
print(result)

2.列表

2.1列表的增删改查

my_list1 = [1,'a']
my_list2 = [2,'b']
# 1.增
my_list1.append('c')
print(my_list1)				#append方法可以为列表添加最后一位元素
my_list1.insert(0,2)
print(my_list1)				#insert方法可在列表指定下标处添加元素,垓下标以后的元素右移,即下标加1
my_list1.extend(my_list2)
print(my_list1)				#extend方法可将my_list2的元素添加至my_list1中

#注意:append、+ 也可连接两个列表,但三种方式是有区别的
my_list1.append(my_list2)	#如果此处使用append方法,会将my_list2作为一个list类型的元素添加至my_list1中
my_list3 = my_list1 + my_list2 		#使用 + 与extend方法的区别:使用 + 生成一个新的列表,但不会改变原列表;使用extend是将my_list2中的元素添加至my_list1中
print(my_list1,my_list3)

# 2.删
my_list1.remove('a')		#使用remove方法可删除指定数据
print(my_list1)
del my_list1[0]				#del可根据列表下标删除列表中的元素
print(my_list1)
result = my_list1.pop()		
result = my_list1.pop(0)	#使用pop方法默认删除列表中最后一个元素,也可传参数下标删除指定下标元素,同时将删除的元素返回,此处使用result接收

# 3.改
my_list1[0]	= 'c'			#修改列表中的元素,直接使用下标然后重新赋值即可
num = my_list1.index('c')	#index可查列表中元素的下标
print(my_list1,num)
# 4.查
if 'c' in my_list1:
	print('my_list1中包含元素c')
if 'x' not in my_list1:
	print('my_list1中没有元素c')     #可使用if in、not in来判断列表中是否包含某元素,然后结合index查找下标
print(my_list1.count('c'))         #conut方法可以查找列表转某元素的个数

输出结果如下:

2.2 遍历列表

说到遍历,自然是使用for循环来完成;也可像字符串枚举那样获取列表元素的下标。

my_list = [1,'a',[1,'a']]

# 1.遍历
print('='*10 + '遍历' + '='*10)
for value in my_list:
    print(value)

# 2.枚举
print('='*10 + '枚举' + '='*10)
for index,value in enumerate(my_list):
    print(index,value)

运行结果:

2.3 列表的切片

列表的切片方法和字符串完全一致,即使用格式:my_list[开始下标:结束下标:步长] 来进行切片

3.字典

3.1 字典的形式及注意点

字典的形式:{'键':'值'},即以花括号包裹的键值对组成的数据类型。

注意:1.键,key必须为不可变类型数据 2.同一个字典中的key不得重复 3.字典中的数据无序存储,故不可使用下标

3.2 字典的常见操作

import sys
my_dict = {'name':'mm','age':18}
# 1.取值
value = my_dict['name']
print(value)			#使用key取值,但是若使用的key不在字典中程序将会报错
value = my_dict.get('name')
value_none = my_dict.get('sex')
print(value,value_none)		#使用get取值,如果key不在字典中,将会返回None而不是报错

# 2.增
my_dict['sex'] = ['women']		#直接使用赋值形式即可为字典添加键值对
my_dict.setdefault('universite')
my_dict.setdefault('address','Beijing')		
print(my_dict)					#setdefault方法也可为字典添加键值对,若果只有key,那么默认值为None

# 3.删
del my_dict['universite']		#使用del可依据字典中的key进行删除
print(my_dict)
value = my_dict.popitem()		#popitem方法为随机删除字典中的键值对,并将删除结果返回
print(value,my_dict)
value = my_dict.pop('sex')		#pop方法可也可按照字典中的key进行删除,并将删除内容返回
print(value,my_dict)
#注意:popitem方法将键、值包装在一个元组中返回,而pop方法仅返回值,字符串类型

# 4.改
my_dict['name'] = 'ls'			#使用赋值形式即可为字典已有key修改值

# 5.查
#如果直接使用字典,默认使用所有key;所有key可用my_dict.keys获取,所有值可用my_dict.values获取
print(my_dict)
if 'age' in my_dict:
	print('my_dict中的键包含age')
if 'age' in my_dict.keys():
	print('my_dict中的键中包含age')
if 18 in my_dict.values():
	print('my_dict的值中包含18')

# 6.遍历字典,同样的如果直接使用my_dict遍历,默认遍历my_dict中的所有key,若要同时遍历key和value使用my_dict.items()
for index in my_dict:
	print(index)
for key,value in my_dict.items():
	print(key,value)

4.元组

元组与列表非常相似,主要区别:1.列表使用[]包裹,而元组使用()包裹; 2.元组为不可变数据类型,不支持修改,一般用于存储不希望被改动数据; 3.所有用于列表的操作除了修改以外,基本都适用于元组,例如下标、index、count元组都是可以使用的。

注意:1.元组虽然不可修改,但元组中的可变类型元素是可以修改的; 2.如果要创建一个仅有一个元素的元组,需要在该元素后加逗号,否则创建的变量类型与该元素类型一致而不是一个元组; 3.创建一个空元组却不需要加逗号。

my_tuple = (1,'a',[1,'a'])
print(my_tuple)
# 1.修改元组中的可变类型元素
my_list = my_tuple[2]
my_list.append(2)
print(my_tuple)

# 2.创建一个单元素元组和空元组
my_tuple1 = (1)
my_tuple2 = (1,)
my_tuple3 = ()
print(type(my_tuple1),type(my_tuple2),type(my_tuple3))

运行结果:

5.集合

集合与字典的形式一样,都是由{}包裹的数据类型,但是集合中的数据不需键值对。且具有以下几个特点:

1.集合中的数据无序排列,故不可使用下标

2.集合中无重复数据,可用来去重

3.集合中的元素必须是不可变类型,list等可变类型数据无法加入集合

4.建立一个非空集合可直接使用{},但建立一个空集合必须使用set{}

利用集合无重复数据的特点进行数据去重:

#利用集合的特点进行数据去重
list1 = ['a','abc',1,(1,'a')]
list2 = [34,'abc',1,True]
list1.extend(list2)
list3 = list(set(list1))
print("列表1为:{}\n列表2为:{}\n不相同的元素为:{}".format(list1,list2,list3))

结果:

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值