本篇博客为博主第一次学 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. 【极致丝滑】彻底摆脱编辑器插件,利用postcss灵活可控地转换px至vw

    背景 旧的rem适配方案(无论是直接使用rem,还是配合flexiblejs等lib库进行视口缩放)已经疲态尽显,且随着安卓高清屏的不断出现,同时data-dpr仍有进一步增加的可能性,rem显得并不 ...

  2. AD16

    第三集   制作光敏小夜灯的原理图 1.点击G切换栅格的精度 2.元器件放置好之后要先布局在布线 3.布线完成后要检查电路的合理性.对应查一下电阻的个数,位置是不是符合.在原理上大概的估计是否可以. ...

  3. Appium之常用API

    Appium常用API解析 1.current_activity:获取当前页面的activity名,比如com.taobao.tao.TBMainActivity 或 com.taobao.brows ...

  4. oracle之三rman 不完全恢复

    rman 不完全恢复 9.1 rman 不完全恢复的三个标准模式:基于time.基于scn和基于sequence: 范例1:恢复过去某个时间点误操作,一般使用基于time或scn. 1)环境:有一套全 ...

  5. Robotframework自动化3-APP启动

    前言 前两节已经讲述了环境的搭建,这节介绍APP是如何运行的 介绍 1.创建项目 2.创建测试套件 3.创建测试用例 4.APP运行 一.创建项目 打开ride,开始创建项目,左上角File--> ...

  6. rocketmq-console修改logo,修改ip,修改port及完整编译安装图文版

    一.下载源码到本地 这里使用IDEA,作为编译工具 https://gitee.com/mrliuNumberOne/rocketmq-externals.git 导入成功后如图: 二.Maven编译 ...

  7. leetcode560题解【前缀和+哈希】

    leetcode560.和为K的子数组 题目链接 算法 前缀和+哈希 时间复杂度O(n). 在解决这道题前需要先清楚,一个和为k的子数组即为一对前缀和的差值. 1.我们假设有这么一个子数组[i,j]满 ...

  8. ASP.NET Core 基于声明的访问控制到底是什么鬼?

    从ASP.NET 4.x到ASP.NET Core,内置身份验证已从基于角色的访问控制(RBAC)转变为基于声明的访问控制(CBAC). 我们常用的HttpContext.User属性ASP.NET ...

  9. MySQL分区 (分区介绍与实际使用)

    分区介绍: 一.什么是分区? 所谓分区,就是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能.而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多个物理分区组 ...

  10. 关于人人开源renren-fast-vue 中npm install各种报错的解决方案

    首先吐槽一下,因为这个问题我整了好几天,把报错信息复制百度,试遍了各种方法,node.js我是卸载了安装,安装了卸载,甚至renren-fast-vue我也删了再下,然后再删,无限循环.然而没有什么软 ...