Python基础知识(三)2021.2.2

2023-10-17 10:40
文章标签 python 基础知识 2021.2

本文主要是介绍Python基础知识(三)2021.2.2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数字格式化

  • 浮点数 f
  • 整数 d

在这里插入图片描述

在这里插入图片描述

可变字符串

在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象,但是有时确实需要经常对字符串进行修改,可以使用io.StringIO()将其转换,或array模块。

>>> s = "I love you"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x0000021308EFF940>
>>> sio.getvalue()
'I love you'
>>> sio.seek(4)
4
>>> sio.write("h")
1
>>> sio.getvalue()
'I lohe you'

基本运算符

注意Python中比较运算符可以连用!
在这里插入图片描述

  1. 比较运算符连用(very convenient)
>>> a = 3
>>> 1 < a <10
True
  1. 位操作
    【左移1位相当于×2,右移一位相当于÷2】
>>> a = 0b11001
>>> b = 0b01000
>>> a|b
25
>>> bin(a|b)
'0b11001'
>>> bin(a&b)
'0b1000'
>>> bin(a^b)
'0b10001'
>>> a = 3
>>> a << 2
12
>>> a = 8
>>> a >> 2
2
  1. 加法操作
    【1】数字相加
    【2】字符串拼接
    【3】列表、元组等合并
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
  1. 乘法操作
    无论对象是什么类型,乘法操作的本质就是复制
    【1】数字相乘
    【2】字符串相乘
    【3】列表、元组等复制
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

复合赋值运算符

与C和Java不一样,Python不支持自增(++)和自减(--)

在这里插入图片描述

运算符优先级问题(不需要强制记忆)

在这里插入图片描述
实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织

  1. 乘除优先加减
  2. 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符

本章实操作业

  1. 使用Python表示数学式
(5+10*x)/5 - 13*(y-1)*(a+b)/x + 9*( 5/x +(12+x)/y)
  1. 从控制台输入用户的月薪,进行运算计算出年薪。打印输出用户的年薪
    注意:读入的内容为string类型,需要转换成int/float类型
>>> month = input("please input the month salary:")
please input the month salary: 10000
>>> year = 12 * month
>>> print(year)10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000
>>> year = 12 * float(month)
>>> print(year)
120000.0
  1. 使用字符串复制,用计算机打印出“爱你一百遍”,打印 100 次
a = ""
for i in range(100):a += "爱你一百遍 "
print(a)a = []
for i in range(100):a.append("爱你一百遍")
print(a)
  1. 将”to be or not to be”字符串倒序输出
>>> b = a[::-1]
>>> print(b)
eb ot ton ro eb ot
  1. 将”sxtsxtsxtsxtsxt”字符串中所有的 s 输出
>>> a = "sxtsxtsxtsxtsxt"
>>> a[::3]
'sssss'
  1. 判断如下输出结果,并文字解释原因:
>>> a = "abd_33"
>>> b = "abd_33"
>>> c = "dd#" 
>>> d = "dd#" 
>>> a is b #输出 true or false? 
True
>>> c is d #输出 true or false? 
False
  1. 写出如下代码打印的结果:
>>> c = "名字是{name},年龄是{age}" 
>>> c.format(age=19,name='高淇')
名字是高淇,年龄是19

第三章 序列

序列是一种数据存储方式,用来存储一系列的整数。在内存中,序列就是一块用于存放多个值的连续的内存空间。Python中常用的序列结构有:字符串、列表、元组、字典、集合。如下图,序列中存储的是整数对象的地址ID,而不是整数对象的值。
在这里插入图片描述

列表

  • 列表:用于存储任意数目、任意类型的数据集合。列表是内置可变【可以根据需要随时增减大小】序列,是包含多个元素的有序连续的存储空间。列表中的元素可以各不相同,也可以是任意类型
  • 列表对象的常用方法:
    在这里插入图片描述
  • 字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列

列表的创建方法(4种)

  1. 基本语法创建
# 创建空列表
a = []
a = ["Cairo",2,6,"daga"]
  1. list()创建【可以将其他类型的数据转换成列表】
    list可以将任何可迭代的数转换成列表
# 创建空列表
a = list()
a = list(range(10))
print(a)b = list("gaoqi.sxt")
print(b)

在这里插入图片描述
【注】range(10)生成的是range类对象,但不是列表;经常用来转换字符串

  1. range()创建整数列表【重要】
    range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。
    语法格式为: range([start,] end [,step])
  • start 参数:可选,表示起始数字。默认是 0
  • end 参数:必选,表示结尾数字。
  • step 参数:可选,表示步长,默认为 1
    python3 中 range()返回的是一个 range 对象,而不是列表。我们需要通过 list()方法将其转换成列表对象.
    在这里插入图片描述
  1. 推导式生成列表
    使用列表推导式可以非常方便的创建列表,在开发中经常使用。
a = [x**2 for x in range(10)]
print(a)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]a = [x**2 for x in range(100) if x%9==0]
a
[0, 81, 324, 729, 1296, 2025, 2916, 3969, 5184, 6561, 8100, 9801]

列表元素的增加和删除

当列表增加和删除元素时,列表会自动进行内存管理。但这个特点涉及列表元素的大量移动,效率较低。除非必要,一般只在列表的尾部添加元素或者删除元素,这会大大提高列表的操作效率。

  1. append方法
    原地修改列表对象,是真正的列表尾部添加新的元素速度最快,推荐使用。
    在这里插入图片描述

  2. +运算符操作
    并不是真正的向尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样会涉及到大量的复制操作,对于操作大量元素不建议使用
    用+=就是同一个地址,如下:
    在这里插入图片描述

  3. extend方法【两个列表合并,推荐使用这个!】
    将目标列表的所有元素添加到本列表的尾部,属于原地操作不创建新的列表对象
    在这里插入图片描述

  4. insert插入元素
    使用 insert()方法可以将指定的元素插入到列表对象的任意指定位置。这样会让插入位置后 面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后面元素的移动。
    在这里插入图片描述

  5. 乘法扩展
    使用乘法扩展生成一个新列表,新列表元素是原列表的多次重复。适用于乘法操作的还有:字符串、元组(list/tuple/string)
    在这里插入图片描述

  6. 列表元素的删除

【1】del删除
删除列表指定位置的元素。

a=[1,2,3,4]
del a[1]
a
[1, 3, 4]

底层原理实际也是数组的拷贝!

【2】pop方法

pop()删除并返回指定位置的元素,如果未指定位置则默认操作列表最后一个元素。
在这里插入图片描述pop方法的参数是索引

【3】remove方法
删除首次出现的指定元素,若不存在该元素则抛出异常。
在这里插入图片描述remove中的参数是列表元素,而不是index

列表元素的访问和计数

  1. 通过索引直接访问元素
    在[0,len-1]范围内,超出范围抛出异常。
    在这里插入图片描述

  2. index()获得指定元素在列表中首次出现的索引
    index可以通过指定元素首次出现的索引位置。
    语法:index(value,[start,[end]])
    其中start和end可以省略,指定了搜索范围。

a = [1,2,2,3,4,5,2,4]
a.index(2)
1
a.index(2,2)
2
a.index(4,7)
7
  1. count()获得指定元素在列表中出现的次数

count可以获得指定元素在列表中的出现次数。

a = [1,2,2,3,4,5,2,4]
a.count(2)
3
  1. len()返回列表长度
a = [1,2,2,3,4,5,2,4]
len(a)
8

成员资格判断

判断列表中是否存在指定的元素,可以使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是一般使用in判断
在这里插入图片描述

切片操作

切片操作可以让我们快速提取子列表或修改。标准格式为:[起始偏移量:终止偏移量[:步长step]]
典型操作:
在这里插入图片描述
在这里插入图片描述
切片操作时,起始偏移量和终止偏移量不在正常范围内也不会报错,小于0当作0,大于len-1当成len-1

列表的遍历
a = [1,23,4,5]
for i in a:print(i)
复制列表所有的元素到新列表对象

直接令新的变量等于原变量并不能达到列表本身元素复制的效果,而只是两个变量指向同一个对象,如果想要进行复制,可以使用下面+[]的方法:
在这里插入图片描述

列表排序

  1. 修改原列表,不创建新列表的排序
a.sort()# 默认升序排列
a.sort(reverse=True) # 降序排列

在这里插入图片描述
打乱顺序:

import random
random.shuffle(a)
a
[62, 6534, 42, 12, 6]
  1. 建新列表的排序
    可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改。
[6534, 62, 42, 12, 6]
id(a)
1827408973440
import random
random.shuffle(a)
a
[62, 6534, 42, 12, 6]
b = sorted(a)
id(b)
1827408970688
b
[6, 12, 42, 62, 6534]
c = sorted(b,reverse=True)
id(c)
1827409885184
c
[6534, 62, 42, 12, 6]
  1. reversed()返回迭代器
    内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数不对原列表做任何修改,只是返回一个逆序排列的迭代器对象
a = [134,2,523,76]
b = reversed(a)
type(b)
<class 'list_reverseiterator'>
list(b)
[76, 523, 2, 134]
list(b)
[]

list_reverseiterator是一个迭代对象,使用list(b)进行输出时,发现只能使用1次,第一次输出了元素,第二次为空。那是因为迭代对象在第一次时已经遍历结束了,第二次不能再使用。

列表相关的其他内置函数汇总

  1. max和min
  2. sum
    数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错。
a = [1,2,3,4]
max(a)
4
min(a)
1
sum(a)
10

多维列表

二维数组

一维数组可以帮助我们存储一维、线性的数据。
二维数组可以帮助我们存储二维、表格的数据。
在这里插入图片描述

元组tuple

列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。因此,元组没有增减元素的相关方法。
元组支持如下操作:

  1. 索引访问
  2. slice操作
  3. 连接操作
  4. 成员关系操作
  5. 比较运算操作
  6. 计数:元组长度len()、最大值max()、最小值min()、求和sum()

元组的创建(2种)

  1. 通过()创建元组,小括号可以省略
a = 13,456,2
a
(13, 456, 2)
b = (1,35,6)
c = (12,)
b
(1, 35, 6)
c
(12,)
type(c)
<class 'tuple'>

【注意】:tuple中若只有一个元素的话,需要在后面添加一个,,否则会被看成整数。
2. 通过tuple()创建元组【大多用于将其他内容转换成元组】

tuple(可迭代的对象)
# 创建一个空的元组
a = tuple()
a = tuple("abd")
a
('a', 'b', 'd')
tuple(range(4))
(0, 1, 2, 3)
tuple([134,546,334])
(134, 546, 334)

【总结】

  1. tuple可以接收列表、字符串、其他序列类型、迭代器等生成元组。
  2. list可以接收元组、字符串、其他序列类型、迭代器等生成列表。

元组的元素访问和计数(3)

  1. 元组的元素不能修改
    在这里插入图片描述

  2. 元组的元素访问和列表一样,只不过返回的仍然是元组对象
    3.

  3. 列表关于排序的方法list.sort()是修改原列表对象,元组没有该方法。如果对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象。
    在这里插入图片描述

zip

将多个列表对应位置的元素组合成为元组,并返回这个zip对象

zip(list1,list2,...)
a = [10,20,30]
b = [40,50,60]
c = [70,80,90]
d = zip(a,b,c)
list(d)
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]

在这里插入图片描述

>通常将zip对象再包装到list中!

生成器推导式创建元组

  • 从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。

  • 我们可以通过生成器对象,【1】转化成列表或者元组。也可以【2】使用生成器对象的__next__() 方法进行遍历,或者【3】直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象

在这里插入图片描述

【元组总结】

  1. 元组的核心:不可变序列
  2. 元组的访问和处理速度比列表快
  3. 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用

这篇关于Python基础知识(三)2021.2.2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224819

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel