python初阶---基础语法篇(二)

2023-11-06


一、数据类型

1、逻辑型
逻辑型又称布尔型,取值只有两种:0和1,或者真和假(False和True)。其中,False和True是0和1的另一种表达形式。他们可以直接参与运算。

True + 100
False + 100

2、数值型
数值型包括整数和浮点数。数值型运算符有:加(+)、减(-)、乘(*)、除(/)。
3、字符型
字符型数据一般用单引号(’ ')或双引号(“ ”)包起来,如果字符串中包含特殊字符,则用反斜杠 \ 转义特殊字符。
对字符串可以进行切片操作。

string = 'ABCDEFGHIJK'
#无步长的切片方式,其语法为string[star:stop]
string[0]   #取索引序号为0的字符串,得到单个字符‘A’
string[0:2] #获取字符串中索引从0开始到2结束的位置的所有字符串(不包括2),切片得到字符串'AB'
'''注:当不指定start时,默认从索引0开始,当不指定stop时,
默认取到最后一个元素,当start和stop都不指定,则获取的是整个字符串'''
#带步长的切片方式,其语法为string[start:stop:strip]
string[0:8:2] #切片得到字符串‘ACEG’

'''注:字符串的索引序号是从0开始的,按[star:stop]进行切片操作是左闭右开的,
因此string[0:2]取的是字符串string中位置索引序号0和1的字符'''

此外,还可以对字符串使用一些函数来进行操作,对字符串操作常用函数:

函数 含义
string.lower() 将字符串string全部变成小写
string.upper() 将字符串string全部变成大写
string.lstrip() 删除字符串string左边的空格
string.rstrip() 删除字符串string右边的空格
string.islower() 判断字符串string是否全部为小写,是则返回True,否则返回False
string.isupper() 判断字符串string是否全部为大写,是则返回True,否则返回False
string.isspace() 判断字符串string是否为空格,是则返回True,否则返回False
string.isnumeric() 判断字符串string是否只由数字构成,是则返回True,否则返回False
string.replace(‘a’,’#’) 将字符串string中为’a’的字符用‘#’替代
‘-’.join([string1,string2]) 使用符号‘-’连接字符串string1和string2
string.partition(‘sep’) 返回string字符串中分隔符‘sep’第一次出现的位置前的字符串、‘sep’以及之后的字符串
string.rpartition(‘sep’) 返回string字符串中分隔符’sep’最后一次出现的位置前的字符串、'sep’以及之后的字符串
string.split(’ sep’,int) 将字符串string按分隔符’sep’分割,返回’sep’之前和之后的字符,int为分割次数
string.rsplit('sep ',int) 将字符串string按分隔符’sep’分割,返回’sep’之前和之后的字符,int为分割次数
string.isdigit() 判断字符串是否只由数字构成,是则返回True,否则返回False
int(string) 将只由数字构成的字符串string转换成整型
float(string) 将由浮点数构成的字符串转换成浮点型
str(int/float) 将int型和float型转换成字符串

注:string.split(’ sep’,int)和string.rsplit(‘sep ‘,int)在不指定int值时,其效果无区别。指定int值时,string.split(’ sep’,int)是将字符串string按分隔符sep从左到右分割int次,string.rsplit('sep ',int)是将字符串string按分隔符sep从右到左分割int次(所有符号都算是分隔符,包括空格)。

二、列表

1、列表简介
list(列表)是Python中一种非常重要的数据类型。列表中可以包含多个元素,且元素类型可以不相同。每一元素可以是任意一种数据类型,包括列表(即列表的嵌套)、元组、字典、集合。所有元素都包含在一对方括号“[]”中,每两个元素之间用逗号分隔。对于不包含任何元素的列表,即“[]”,称为空列表。
2、列表索引
要获取列表的元素,可以使用list[index]的方式,其中,index是要访问的元素的索引。要获取列表的子列表,可以使用list[beg:end]的方式,其中,beg是要取出的部分元素在list中的起始索引,end是要取出的部分元素在list中的结束索引。

ls = [1,2,3,4,5]  #定义列表ls
ls[3]    #获取列表中索引为3的元素
ls[0:3]  #获取列表中索引从0开始到3结束的所有元素(不包括3),得到子列表[1,2,3]
ls[:3]   #等价于ls[0:3] 
ls[2:]   #表示取出从索引为2的位置开始直到最后一个元素(包括最后一个元素)
ls[:]    #beg和end都省略,表示取出ls中的所有元素

注:Python中,第一个列表元素的索引为0,而不是1。
3、列表常用函数

函数名 作用
list.append(x) 将元素x追加到列表的尾部
list.extend(L) 将列表L中的所有元素追加到列表尾部形成新列表
list.inser(i,x) 在列表中index为i的位置插入元素x
list.remove(x) 将列表中第一个为x的元素移除。若不存在x元素将引发一个异常
list.pop(i) 删除index为i的元素,并将删除的元素显示,若不指定i,则默认弹出最后一个元素
del list[index] 删除列表中索引为index的元素,其中[index]可以为[beg:end]形式
list.clear() 清空列表
list.index(x)] 返回第一个x元素的位置,若不存在x,则报错
list.count(x) 统计列表中x元素的个数
list.reverse() 将列表反向排列
list.sort() 将列表从小到大排序。若要从大到小排序,可使用list.sort(reverse = True),其排序为永久性排序
sorted(list) 将列表从小到大排序。若要从大到小排序,可使用sorted(ls,reverse = True),其排序为临时性排序
list.copy() 返回列表的副本

三、元组

1、元组简介
Tuple(元组)与列表类似,可以包含多个元素,且元素类型可以不相同,书写时每两个元素之间也是用逗号分隔。与列表不同的是,元组的所有元素都写在一对小括号“()”中,且元组中的元素不能修改。对于不包含任何元素的元组,即(),称为空元组。
二、元组的索引
元组的索引方式与列表的索引方式完全相同。可以使用tuple[index]访问元组中的元素,也可以使用tuple[beg:end]的方式取出元组中的部分元素形成一个新元组。

x = (1,2,3,4,5)  #定义元组x方式一
x = 1,2,3 ,4,5   #定义元组x方式二
x[1] #获取元组x中索引为1的元素
x[0:3] #获取元组中索引从0开始到3结束的元素(不包括2),形成一个新的元组
x[:3] #等价于x[0:3]
x[2:] #表示取出从索引为2的位置开始直到最后一个元素(包括最后一个元素)
x[:]  #beg和end都省略,表示取出x中的所有元素

在Python中,如果多个变量用半角逗号隔开,则默认将多个变量按tuple的形式组织起来,因此在Python中两个变量的互换可以这样写:

x,y = 1,2 #将1赋给x,将2赋给y
x,y = y,x #将x和y的值互换

3、元组常用函数

函数 作用
tuple.count(x) 计算x在tuple中出现的次数
tuple.index(x) 计算第一个x元素的位置

四、集合

一、集合简介
与元组和列表类似,set(集合)中同样可以包含多个不同类型的元素,但集合中的各个元素无序,不允许有相同元素且元素必须是可哈希的对象。可哈希对象是指拥有__hash__(self)内置函数的对象。列表、元组、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。
注:(1)set中的元素位置是无序的,因此不能用set[i]这样的方式获取其元素。
(2)set中不能保存重复数据,即具有过滤重复数据的功能。
二、集合创建
集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。创建集合时,既可以使用{},也可以使用set函数,set函数的语法格式为:set(iterable)。其中,iterable是一个可选参数,表示一个可迭代对象。
注:可迭代(iterable)对象是指可以一次返回它的一个元素,如字符串、列表、元组都是可迭代的数据类型。

>>> s1 = set("abcdefg")   #创建集合s1
>>> s2 = set("defghijkl") #创建集合s2
>>> s1
{'d', 'e', 'b', 'c', 'f', 'a', 'g'}
>>> s2
{'l', 'd', 'k', 'e', 'h', 'i', 'f', 'g', 'j'}
>>> s1-s2   #取出s1中不包含s2的部分
{'c', 'b', 'a'}
>>> s2-s1   #取出s2中不包含s1的部分
{'l', 'k', 'h', 'i', 'j'}
>>> s1|s2   #取出s1与s2的并集
{'l', 'k', 'e', 'h', 'c', 'f', 'j', 'd', 'b', 'i', 'a', 'g'}
>>> s1&s2   #取出s1与s2的交集
{'d', 'f', 'g', 'e'}
>>> s1^s2   #取出s1与s2的并集但不包括交集的部分
{'l', 'k', 'h', 'i', 'b', 'c', 'a', 'j'}
>>> 'a' in s1 #判断'a'是否在s1中
True
>>> 'a' not in s1 #判断'a'是否在s1中
False

五、字典

1、字典简介
dict(字典)是另一种无序的对象集合。但与集合不同,字典是一种映射类型,每一个元素是一个键(key):值(value)对。字典中每一个元素以逗号隔开,key与value用冒号隔开。
在一个字典对象中,键必须是唯一的,即不同元素的键不能相同。另外,键必须是可哈希数据,即键不能是列表、元组、集合、字典等类型,值可以是任意类型。对于不包含任何元素的字典,即{},称为空字典。
2、字典创建
创建字典既可以使用{},也可以使用dict函数。
如下5种方式创建的5个字典对象的元素完全相同。

a = {'one':1,'two':2,'three':3} #创建字典a
b = dict(one = 1,two = 2,three = 3)#创建字典b
c = dict(zip(['one','two','three'],[1,2,3]))#创建字典c
d = dict([('one',1),('two',2),('three',3)])#创建字典d
e = dict({'one':1,'two':2,'three':3})#创建字典e

print(a)
print(b)
print(c)
print(d)
print(e)

输出结果:
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}

zip函数的参数是多个可迭代的对象(列表等),其功能是将不同对象中对应的元素分别打包成元组,然后返回由这些元组组成的列表。
python3.x中为了减少内存,zip函数返回的是一个对象,可以通过list函数转换为列表。

print(list(zip(['one','two','three'],[1,2,3])))

输出结果:
[('one', 1), ('two', 2), ('three', 3)]

3、访问字典元素
与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问,而是通过键访问。

info = {'name':'张三','age':19,'score':{'python':95,'math':92}} #创建字典info
方式一:
print(info['name']) #输出张三
print(info['age']) #输出19
print(info['score'])#输出{'python': 95, 'math': 92}
print(info['score']['python']) #输出95
print(info['score']['math']) #输出92

方式二:
print(info.get('name')) #输出张三
print(info.get('age')) #输出19
print(info.get('score'))#输出{'python': 95, 'math': 92}
print(info.get('score').get('python'))#输出95
print(info.get('score').get('math'))#输出92

3、字典操作
字典常见操作:

info = {'name':'张三','age':19,'score':{'python':95,'math':92}} #创建字典info
info.items() #获取字典的项列表
info.keys() #获取字典的key列表
info.values() #获取字典的value列表
info.pop('name') #弹出key = 'name'的项
d = info.copy() #字典复制
info['class'] = 1005 #向字典中添加键值对'class': 1005
info.clear() #字典元素清除

六、序列

列表、元组和字符串统称为序列,它们具有如下共同点:
(1)都可以通过索引得到每一个元素;
(2)默认索引值总是从0开始;
(3)可以通过分片的方法得到一个范围内的元素的集合(例如list[beg,end]);
(4)有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
对序列的一些常用函数、操作符及其意义:

函数或操作符 意义
list(iterable) 把一个可迭代对象转换成列表
tuple(iterable) 把一个可迭代对象转换为元组
len(s) 返回s的长度
max() 返回序列或者参数集合中的最大值
min() 返回序列或者参数集合中的最小值
sum(iterable,start = 0) 返回序列iterable和可选参数的总和
enumerate() 枚举,生成由每个元素的index值和item值组成的元组
s+t 连接序列s与序列
sn或ns 将序列s延长自身n次

七、遍历函数map

Python的内置函数map()用于遍历序列,对序列中每个元素进行操作,最终获取新的序列。其语法为map(function,iterable),其中function为函数,iterable为可迭代对象。在Python3中,map(function,iterable)返回的是一个对象,可用list(map(function,iterable))将其转换成列表。

一、结合lambda函数使用
a = [1,2,3,4,5]
list(map(lambda a:a+100,a))

输出结果:
[101, 102, 103, 104, 105]

二、结合自定义函数使用
def func(a):
    return a+100
    
if __name__ == '__main__':       
    a = [1,2,3,4,5]
    print(list(map(func,a)))

输出结果:
[101, 102, 103, 104, 105]

八、筛选函数filter

python中的内置函数filter()用于对序列中的元素进行筛选,最终获取符合条件的序列。其语法为filter(function,iterable),其中function为函数,iterable为可迭代对象。在Python3中,与map函数一样,filter(function,iterable)返回的是一个对象,可用list(filter(function,iterable))将其转换成列表。

一、结合lambda函数使用
a = [1,2,3,4,5]
list(filter(lambda a:a>2,a))

输出结果:
[3, 4, 5]

二、结合自定义函数使用
def func(a):
    return a>2
    
if __name__ == '__main__':   
    a = [1,2,3,4,5]
    print(list(filter(func,a)))

输出结果:
[3, 4, 5]

九、累计函数reduce

reduce函数用于对序列内所有元素进行累计操作。从Python3开始,使用reduce函数时需要从functools模块导入。其语法为reduce(function,iterable,start),function为有两个参数的函数,iterable为可迭代对象,start为初始值。

from functools import reduce

一、结合lambda函数使用
a = [1,2,3,4,5]
reduce(lambda arg1,arg2:arg1+arg2,a)

输出结果:
15

二、结合自定义函数使用
def func(a,b):
    return a+b
    
if __name__ == '__main__':
    a = [1,2,3,4,5]
    print(reduce(func,a))
输出结果:
15

python初阶—基础语法篇(一)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python初阶---基础语法篇(二) 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐