本篇博客为博主第一次学 Python 所做的笔记(希望读者能够少点浮躁,认真阅读,平心静气学习!)

补充:

  • 列表、元组和字符串共同属性:

    • 属于有序序列,其中的元素有严格的先后顺序
    • 都支持双向索引,索引范围 [ -L, L-1 ] ,L -- 表示列表、元组和字符串的长度(分正向索引和反向索引)。
      • 正向索引:0 表示第 1 个元素,1 表示第 2 个元素,2 表示第 3 个元素...
      • 反向索引:-1 表示最后 1 个元素,-2 表示倒数第 2 个元素,-3 表示倒数第 3 个元素...

一、列表(关于列表的所有内容):

放在一对方括号中,相邻元素之间使用逗号分隔。

  • 同一个列表元素的数据类型可以各不相同。
  • 列表包含:
    1. 整数浮点数复数字符串 等 基本类型元素。
    2. 列表元组字典集合函数其他任意对象

创建列表:

  • 使用方括号直接创建
  • list() 函数把元组、range 对象、字符串、字典、集合,以及 map 对象、zip 对象、enumerate 对象或其他类似对象 转换 为列表。
  • 内置函数( sorted() )、标准库函数( random.sample() )或扩展函数( jieba.lcut() )也会返回列表

函数:

1. 访问元素:

  • 用户可以使用整数作为下标来随机访问其中任意位置上的元素
    data = list(range())
    # data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(data[1])
    # 结果 1
    print(data[-1])
    # 结果 9
    ……
  • 如果指定的下标不在有效范围内,代码会抛出异常提示下表越界

2. 其他常用方法:

lst - 表示列表对象

函数 解释
lst.append(x) 将 x 追加至列表 lst 的尾部,不影响列表中已有元素的位置,也不影响列表在内存中的起始地址
lst.insert(index, x) 在列表 lst 的 index 位置处插入 x,该位置之后的所有元素自动向后移动,索引加 1
extend(L) 将列表 L 中所有元素追加至列表 lst 的尾部,不影响 lst 列表中已有元素的位置,也不影响 lst 列表在内存中的起始地址。
pop([index]) 删除并返回列表 lst 中下标为 index 的元素,该位置后面的所有元素自动向前移动,索引减 1。index 默认为 -1,表示删除并返回列表中最后一个元素
remove(x) 在列表 lst 中删除第一个值为 x 的元素,被删除元素位置之后的所有元素自动向前移动,索引减 1;如果列表中不存在 x 则抛出异常。
count(x) 返回 x 在列表 lst 中的出现次数
index(x) 返回列表 lst 中第一个值为 x 的元素的索引,若不存在值为 x 的元素则抛出异常。
sort( key = None , reverse = False) 对列表 lst 的所有元素进行原地逆序,首尾交换

3. 推导式:

使用 非常简洁 的方式对列表或其他可迭代对象的元素进行遍历、过滤或再次计算,快速生成满足特定需求的新列表。

# 格式:
[expression for expr1 in sequence1 if condition
for expr2 in sequence2 if condition2
for expr3 in sequence3 if condition3
...
for exprN in sequenceN if conditionN
] # 例子:
data = [num for num in range(20) if num%2==1]
# 等价于 =>
data = []
for num in range(20):
if num%2 == 1:
data.append(num)

二、元组(关于元组的所有内容):

创建元组:

  • 用圆括号放若干元素创建元组(如果只有一个元素,则需要多加一个逗号 (3,)
  • tuple() 函数把 列表字典集合字符串 以及 range 对象map 对象zip 对象其他类似对象转换为元组

元组的好处(与列表对比):

元组 列表
修改元素值 不能直接修改 可以修改
访问速度
开销
安全性 安全 不安全
是否可以用作字典的键 可以 不可以
是否可以作为集合的元素 可以 不可以

三、字典(关于字典的所有内容):

  • 属于容器对象,其中包含若干元素,每个元素包含 “键” 和 “值” 两部分,之间使用冒号分隔,表示一种对应关系。
  • 不同元素之间使用逗号分隔,所有元素放在一对大括号中。
  • “键”,可以是 Python 中任意不可变数据,例如整数、复数、字符串、元组等类型;不能是列表、集合、字典或其他可变类型,包含列表等可变数据的元组也不能作为字典的 “键”

函数:

1. 访问:

# 初始化
data = dict(name = "张三", age = 8, sex = 'M')
  • 把 “键” 最为下标可以返回对应的 “值”(不存在的话会抛出异常)
print(data('name'))
# 结果:张三
  • get() 方法获取指定的 “键” 对应的 “值”(不存在返回空值或指定的值)
print(data.get('age'))
# 结果:18
  • 支持元素迭代

    • 可以将其转换为列表或元组
      print(list(data))
      # 结果:['name', 'age', 'sex']
    • 可以使用 for 循环遍历其中的元素,默认情况下是遍历字典中的 “键”
      for key, value in data.items():
      print(key, value, sep='\t')
      # 结果:name 张三
      # 结果:age 18
      # 结果:sex M
    • 遍历字典元素,必须使用字典对象的 items() 方法明确说明
      print(list(data.items()))
      # 结果:[('name', '张三'), ('age', '18'), ('sex', 'M')]
    • 遍历字典的 “值”,则必须使用字典对象的 values() 方法明确说明
      print(list(data.values()))
      # 结果:['张三', '18', 'M']

2. 修改:

当以指定 “键” 为下标为字典元素赋值时:

  • 若该 “键” 存在,表示修改该 “键” 对应的值:
soct = {'IP': '127.0.0.1', 'port': 80}
soct['port'] = 8080
print(soct)
# 结果:{'IP': '127.0.0.1', 'port': 8080}
  • 若 “键” 不存在,表示添加一个新元素:
soct = {'IP': '127.0.0.1', 'port': 80}
soct['protocol'] = 'TCP'
print(soct)
# 结果:{'IP': '127.0.0.1', 'port': 80, 'protocol': 'TCP'}

3. 添加:

update() 方法可以将另一个字典的元素一次性全部添加到当前字典中,如果两个字典中存在相同的 “键”,则以另一个字典中的 “值” 为准对当前字典进行更新:

sock = {'IP': '127.0.0.1', 'port': 80}
sock.update({'IP': '192.168.9.62', 'protocol': 'TCP'})
print(sock)
# {'IP': '192.168.9.62', 'protocol': 'TCP', 'port': 80}

4. 删除:

sock = {'IP': '192.168.9.62', 'port': 80, 'protocol': 'TCP'}
  • pop() 方法可以删除指定 “键” 对应的元素,同时返回对应的 “值”。
print(sock.pop('IP'))
# 结果:192.168.9.62
  • popitem() 方法用于删除并返回一个包含两个元素的元组,其中的两个元素分别是字典元素的 “键” 和 “值”。
print(sock.popitem())
# 结果:('protocol', 'TCP')
  • del 删除指定的 “键” 对应的元素。
del sock['port']
print(sock)
# 结果:{'IP': '192.168.9.62', 'protocol': 'TCP'}

四、集合(关于集合的所有内容):

无序、可变的容器对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复。

0. 创建:

  • 所有元素放在一对大括号中,创建集合
data = {30, 40, 50}
  • 使用 set() 函数将列表、元组、字符串、range 对象等其他可迭代对象转换为集合。
  • 使用集合推导式生成特定的集合,如果原来的数据中存在重复元素,在转换为集合的时候重复的元素只保留一个,自动除去重复元素。
  • 如果原序列或迭代对象中有可变类型的数据,则无法转换成为集合,抛出异常。

特点

  • 集合内数据要求:

    • 集合中只能包含数字、字符串、元组等不可变类型的数据
    • 不包含列表、字典、集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素。
  • 元素是无序的,元素储存顺序和添加顺序并不一致。

1. 访问:

  • 集合不支持使用下标直接访问特定位置上的元素,也不支持使用 random 中的 choice() 函数从集合中随机选取元素
  • 支持使用 random 模块中的 sample() 函数随机选取部分元素。

2. 修改:

函数 解释
add() 添加新元素,如果存在则忽略该操作,不会抛出异常。
update() 方法用户合并另一个集合中的元素到另一个集合中,并自动除去重复元素。
data = {30, 40, 50}
data.add(20)
print(data)
# 结果:{40, 50, 20, 30} data = {30, 40, 50}
data.update({40, 60})
print(data)
# 结果:{50, 40, 60, 30}

3. 删除:

函数 解释
pop() 用来随机删除并返回集合中的一个元素,如果集合为空则抛出异常。
remove() 用于删除集合中的指定元素,如果指定元素不存在则抛出异常。
remove() 用于从集合中删除一个指定元素,若指定的元素不在集合中则直接忽略该操作。
data = {30, 40, 50}
data.remove(30)
print(data)
# 结果:{40, 50} data = {30, 40, 50}
data.discard(30)
print(data)
# 结果:{40, 50} data = {30, 40, 50}
data.pop()
print(data)
# 结果:{50, 30}

五、字符串(关于字符串的所有内容):

字符串属于不可变对象。

1. 编码与解码

函数 解释
encode() 使用指定的编码格式把字符串编码为字符串,默认使用 UTF-8 编码格式。
decode() 使用指定的编码格式把字节串解码为字符串,默认使用 UTF-8 编码格式。

2. 将数据格式转化为特定格式的字符串

函数 解释
format() 用于把数据格式转化为特定格式的字符串,该方法通过格式字符串进行调用。

常用的格式

  • b(二进制格式)
  • c(把整数转换成 Unicode 字符)
  • d(十进制格式)
  • o(八进制格式)
  • x(小写十六进制格式)
  • X(大写十六进制格式)
  • e/E(科学计数法格式)
  • f/F(固定长度的浮点数格式)
  • %(使用固定长度浮点数显示百分数)
# 保留4位小数
# 0 表示参数下标,对应第一个参数
print('{0:.4f}'.format(10/3))
# 结果:3.3333
print('{0:.2%}'.format(1/3))
# 结果:33.33% # 格式化为百分数字符串,总宽度为10,保留2位小数,> 表示右对齐
print('{0:>10.2%}'.format(1/3))
# 结果: 33.33% # 逗号表示在数字字符串中插入逗号作为千分符,#x表示格式化为十六进制数
print("{0:,} in hex is: {0:#x}, in oct is {0:#o}".format(5555555))
# 结果:5,555,555 in hex is: 0x54c563, in oct is 0O25142543 # 可以先格式化下标为 1 的参数,再格式化下标为 0 的参数
print("{1} in hex is: {1: #x}, {0} in oct is {0:o}".format(6666, 66666))
# 结果:66666 in hex is: 0x1046a, 6666 in oct is 15012 # _表示在数字中插入下划线来为千分符
print('{0:_}, {0:#_x}'.format(10000000))
# 结果:10_000_000, 0x98_9680

3. 单个字符串在字符串中的相关函数

函数 解释
index() 返回一个字符串在当前字符串中 首次出现 的位置,如果当前字符串中不存在此字符串,则抛出异常。
rindex() 返回一个字符串在当前字符串中 最后一次 出现的位置,如果当前字符串中不存在此字符串,则抛出异常。
count() 方法用来返回一个字符串在当前字符串中 出现的次数,如果当前字符串中不存在此字符串,则返回 0。

4. 字符串的编辑修改

函数 解释
replace() 用来替换字符串中指定字符或子字符串的所有重复出现,每次只能替换一个字符或一个字符串,把指定的字符串参数作为一个整体对待,类似与 Word、WPS、记事本、写字板等文本编辑器的'全部替换'功能。该方法返回一个新字符串,并不修改原字符串。
maketrans() 用来生成字符串映射表。
format() 用于把数据格式转化为特定格式的字符串,该方法通过格式字符串进行调用。
translate() 用来根据映射表中定义的对应关系转换字符串并替换其中的字符。
text = "python 是一门非常棒的编程语言。"
print(text.replace('棒', '优雅').replace('编程', '程序设计'))
# 结果:python 是一门非常优雅的程序设计语言。 table = ''.maketrans('0123456789', '零壹贰叁肆伍陆柒捌玖')
print('Tel:30647359'.translate(table))
# 结果:Tel:叁零陆肆柒叁伍玖

5. 字符串进行排版

函数 解释
ljust() 居左
rjust() 居右
center() 居中
print('居左'.ljust(20)+'结束')
# 结果:居左 结束
print('居右'.rjust(20, '#'))
# 结果:####################居右
print('居中'.center(20, '='))
# 结果:==========居中==========

6. 自定义分隔符对字符串分隔

不指定默认为空格、换行符和制表符等空白字符)作为分隔符对原字符串进行分隔

函数 解释
split() 从左向右
rsplit() 从右向左
join() 使用指定的字符串作为连接符对可迭代对象中的若干字符串进行连接。
text = 'Beautiful is better than ugly.'
print(text.split())
# 结果:['Beautiful', 'is', 'better', 'than', 'ugly.'] print(text.split(maxsplit=1))
# 结果:['Beautiful', 'is better than ugly.'] print('1,2,3,4'.split(','))
# 结果:['1', '2', '3', '4'] print(','.join(['1', '2', '3', '4']))
# 结果:1,2,3,4 print(':'.join(map(str, range(1, 5))))
# 结果:1:2:3:4

7. 大小写转换

函数 解释
lower() 字符串中的英文字母全部转换为 小写 字母
upper() 字符串中的英文字母全部转换为 大小 字母
capitalize() 每个 句子第一个字母 转换为 大写 字母
title() 每个 单词第一个 字母转换为 大写 字母
swapcase() 小写 字母转换为 大写 字母并把 大写 字母转换为 小写 字母
text = 'Explicit is better than implicit.'
print(text.lower())
# 结果:explicit is better than implicit. print(text.upper())
# 结果:EXPLICIT IS BETTER THAN IMPLICIT. print(text.capitalize())
# 结果:Explicit is better than implicit. print(text.title())
# 结果:Explicit Is Better Than Implicit. print(text.swapcase())
# 结果:eXPLICIT iS bETTER tHAN iMPLICIT.

8. 判断字符串开始与结束单词

测试字符串是否以指定的一个或几个字符串(放在元组中)开始或结束

函数 解释
startswith() 开始
endswith() 结束
text = 'Simple is better than complex.'
print(text.startswith('simple'))
# 结果:False print(text.startswith('Simple'))
# 结果:True print(text.endswith(('.', '!', '?')))
# 结果:True

9. 删除字符串指定字符

删除字符串两侧、右侧和左侧的空白字符或指定的字符

函数 解释
strip() 两侧
rstrip() 右侧
lstrip() 左侧
text = '     ======test===#####     '
print(text.strip())
# 结果:======test===##### print(text.strip('=# '))
# 结果:test

Python中列表、元组、字典、集合与字符串,相关函数,持续更新中……的更多相关文章

  1. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  2. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  3. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  4. python的列表元组字典集合比较

    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...

  5. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  6. python_列表——元组——字典——集合

    列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  7. 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...)

    目录 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...) Java书写规范 IDEA的一些常用快捷键 Java类中作为成员变量的类 Java源文件中只能有一个public类 Java中 ...

  8. Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】

    1.列表 2.元组 3.字典 4.字符串 5.set集合 6.深浅拷贝

  9. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  10. Python 列表&元组&字典&集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

随机推荐

  1. Mysql用户权限控制(5.7以上版本)

    1.1. 最简单的MySql权限   最简单也是最高效的,如果解决新手们删库跑路的问题其实也是很简单的,对于正式库只给一个增删改查的权限,或者只给一个查询权限(是不是就解决了删库的可能性?) 使用Ro ...

  2. 关于Vue-CLI的那些事儿

    Vue CLI是基于Vue.js进行快速发展的完整系统,提供了: 交互式的项目脚手架 实现零配件的原型开发 图形化的创建和管理项目的界面 基本框架的构建: . ├── build/ # webpack ...

  3. Java I/O流 复制文件速度对比

    Java I/O流 复制文件速度对比 首先来说明如何使用Java的IO流实现文件的复制: 第一步肯定是要获取文件 这里使用字节流,一会我们会对视频进行复制(视频为非文本文件,故使用之) FileInp ...

  4. 架构设计 | 基于Seata中间件,微服务模式下事务管理

    源码地址:GitHub·点这里 || GitEE·点这里 一.Seata简介 1.Seata组件 Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata将为用 ...

  5. JVM运行时数据区--纵向补充--对象的实例化内存布局与访问定位

    对象的实例化 创建对象的方式 1.new:最常见的方式(本质是构造器) 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法 2.Class的newInsta ...

  6. Linux里隐藏的计算器,你知道它的奥秘吗?

    Linux里隐藏的计算器,你知道它的奥秘吗? 大家都知道,windows下有个计算器工具,我们在工作生活中经常使用到它.但是,你可知Linux下也同样有个计算器吗? 当然,良许说的是命令行下的计算器工 ...

  7. Redis可视化工具推荐

    前言 Redis可视化工具目前好用的免费的几乎难以寻迹,百度能搜索到的推荐比较多的是Redis Desktop Manager 官网地址:https://redisdesktop.com/pricin ...

  8. Android如何使用注解进行代码检查

    原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流! Android Studio 内置了代码检查工具 Lint,可在菜单栏选择 Analyze > Inspect Code 执 ...

  9. Asp.Net Core Log4Net 配置分多个文件记录日志(不同日志级别)

    本文所有配置都是在core3.1环境下. 首先看看最终的效果. 请求监控:对每次请求的相关信息做一个记录. 全局异常:我不想我的错误信息,跟其他的信息混合在一起,查看的时候不大方便. 应用日志:这个主 ...

  10. Processing 状态量控制动画技巧

    之前在CSDN上发表过: https://blog.csdn.net/fddxsyf123/article/details/62848357