Python 基础,不看会后悔哦!

本文详细介绍了Python的基础数据类型,包括Number、String、List、Tuple、Dictionary和Set。对于字符串,讨论了索引、拼接和转义字符;列表则涵盖了可变性、拼接和索引;元组作为不可变数据类型,其特殊构造规则也被提及。还深入讲解了正则表达式,包括查找、分割和替换等操作,强调在不同场景下选择str.split或re.split的考量因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

1.标准数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

其中

  • 不可变数据:Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据:List(列表)、Dictionary(字典)、Set(集合)

1.1 Number(数字)#

Python3 支持 int、float、bool、complex(复数)。

在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

内置的 type() 函数可以用来查询变量所指的对象类型。

或者使用 isinstance(a, int)

isinstance 和 type 的区别在于:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型

1.2 String(字符串)#

Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

变量[头下标:尾下标] 左闭合区间

索引值以 0 为开始值,-1 为从末尾的开始位置。

str = 'Runoob'
 
print (str)          # 输出字符串
print (str[0:-1])    # 输出第一个到倒数第二个的所有字符
print (str[0])       # 输出字符串第一个字符
print (str[2:5])     # 输出从第三个开始到第五个的字符
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # 输出字符串两次
print (str + "TEST") # 连接字符串

Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST

Python 使用反斜杠()转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串

>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>>  

注意:

  1. 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  2. 字符串可以用+运算符连接在一起,用*运算符重复。
  3. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  4. Python中的字符串不能改变。

1.3 List(列表)#

列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

变量[头下标:尾下标] 左闭合区间

索引值以 0 为开始值,-1 为从末尾的开始位置。

注意:

  1. List写在方括号之间,元素用逗号隔开。
  2. 和字符串一样,list可以被索引和切片。
  3. List可以使用 + 操作符进行拼接。
  4. List中的元素是可以改变的。
  5. 截取时可以接收第三个参数,作用是截取的步长
r1 = []
r1.append(1)

1.4 Tuple(元组)#

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

其实,可以把字符串看作一种特殊的元组。

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

注意:

  1. 与字符串一样,元组的元素不能修改。
  2. 元组也可以被索引和切片,方法一样。
  3. 注意构造包含 0 或 1 个元素的元组的特殊语法规则。
  4. 元组也可以使用+操作符进行拼接。

1.5 Dict (字典)#

r2 = {}
r2["k1"] = "v1"

1.6 Set(集合)#

2.数字和字符串拼接#

id = 1
session_key = str(id) + '_user'

3. if 条件#

3.1 短路原则#

条件判断遵循短路原则,第一个条件判断之后如果能确定整个 if 表达式的值,那就不再判断下一个了

a = 0
b = 1
if (a > 0) and (b / a > 2):
    print("yes")
else:
    print("no")
结果:no

if (a > 0) or (b / a > 2):
    print("yes")
else:
    print("no")
结果:报除零错

3.2 三元表达式#

res = true if 1 > 0 else false

3.3 汉诺塔#

a b c 三个位置分别对应 开始位置、中间借助的位置、最终位置

def hano(n, a, b, c):
    if n == 1:
        print(a, "-->", c)
        return None
    hano(n - 1, a, c, b) # 开始位置是 a,借助 c,把除了最后一个都放到 b
    print(a, "-->", c)
    hano(n - 1, b, a, c) # 开始位置是 b,借助 a,把除了最后一个都放到 c


hano(3, "A", "B", "C")

3. 正则#

import re

text = "......"
pattern = r"..."
regex = re.compile(pattern, re.IGNORECASE) # 忽略大小写,先进行编译,返回一个正则对象
result = regex.function(text)

3.1 查找一项#

  1. search: 查找任意位置的匹配项
  2. match: 从字符串开头匹配,如果开头第一个字符就不配,返回 None
  3. fullmatch: 整个字符串和正则完全匹配才行,否则返回 None

3.2 查找多个匹配项#

  1. findall: 从字符串任意位置查找,返回一个列表
  2. finditer: 从字符串任意位置查找,返回一个迭代器

列表是一次性生成在内存中,而迭代器是需要使用时一点一点生成出来的,内存使用更优。所以如果存在大量的匹配项,使用 finditer 更好一点。

3.3 分割#

re.split(pattern, string, maxsplit=0, flags=0)
函数:用 pattern 分开 string,maxsplit表示最多进行分割次数,flags表示模式,比如 re.IGNORECASE

在 不需要正则支持 且 数据量和数次不多 的情况下使用 str.split 函数更合适,反之则使用 re.split 函数。

3.4 替换#

  1. sub: 替换掉字符串中被正则匹配到的字符,返回替换后的字符串
  2. subn: 替换掉字符串中被正则匹配到的字符,返回替换后的字符串和替换次数

3.5 其他#

  1. re.escape(pattern): 如果 pattern 中存在特殊字符,通过该方法可自动转义。但是可能存在转义错误问题,所以还是手动转义更安全。如果大家对Python感兴趣的话,可以加一下我们的学习交流抠抠群哦:649825285,免费领取一套学习资料和视频课程哟~
  2. re.purge(): 清除正则缓存
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值