本篇博客为博主第一次学 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. Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】

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

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

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

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

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

  10. python的列表 元组 字典

    列表和元组都是序列,是数据元素的集合,数据元素可以是数值.字符串,布尔值.对象等. 一.列表:用方括号定义[] 空列表 names = [] 带值的列表 names = ["bill&quo ...

随机推荐

  1. JS与APP原生控件交互

    "热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...

  2. 从零开始学IOS开发

    从今天开始开一个坑,由于业务变动,要开始学习IOS开发进行IOS app开发,其实鄙人本身就是一只菜鸟加大学狗,有过两年的C#,ASP.NET MVC,微信公众平台开发经验,一只在继续努力着,从大三下 ...

  3. Sqlcompletefree

    Sqlcompletefree SQLSERVER中SQL代码自动提示填充,自动格式化SQL语句工具Sqlcompletefree.方便开发操作.

  4. sqlserver 存储过程 递归查询分组+hierarchyid重建会员关系

    CREATE PROCEDURE [dbo].[GetGroupInfo] @s_code NVARCHAR() = --会员卡号 AS BEGIN declare @p int; --查询唯一性结果 ...

  5. 依赖注入[4]: 创建一个简易版的DI框架[上篇]

    本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度 ...

  6. C#//字节数组转16进制字符串

    //字节数组转16进制字符串 private static string byteToHexStr(byte[] bytes,int length) { string returnStr = &quo ...

  7. 在树莓派是安装并配置NTP服务

    我们都知道树莓派的小巧和省电节省空间等太多的优势,这里就不一一列举了,那么树莓派就需要长时间的运行,可以7×24的方式运行,那么我们就把树莓派当作一个小的服务器来运行,可以跑一些小的应用,例如可以在局 ...

  8. SPRING 事务管理说明

    spring 事务管理是通过AOP拦截指定的方法,进行事务管理. 事务配置 <aop:config proxy-target-class="true"> <aop ...

  9. QeePHP View视图的默认变量与新增变量

    新版本的QeePHP(V13.1)中,视图页面已经默认添加了几个常用变量 $_app; //控制器所属的应用程序 $_login_user;  //登陆用户信息 直接在视图页面直接使用变量即可. 如果 ...

  10. sqlserver 2008 r2 下载地址和序列号,可用迅雷下载

    sqlserver 2008 r2 下载地址,可用迅雷下载 下载sqlserver 2008 r2 ,微软用了一个下载器,经过从下载器上,将他的地址全部用键盘敲了下来.最终的简体中文版地址如下: 32 ...