首页 > 编程语言 >个人自用python知识点

个人自用python知识点

时间:2024-06-14 19:32:12浏览次数:21  
标签:知识点 python 45 字符串 自用 set1 str print 拷贝

str字符串常用方法

str_1 = "abcdefgaaaAGJIFJIJaadfn"

# 1. index 返回某个字符第一次出现的下标,若无则报错
print(str_1.index("a"))
# print(str_1.index("p"))     # 报错

# 2. find 返回某个字符第一次出现的下标,若无则返回-1
print(str_1.find("a"))
print(str_1.find("p"))

# 3. count 统计某一个字符出现的次数
print(str_1.count("a"))

# 4. upper 转大写,并不会改变原有的字符串
print(str_1.isupper())
# 判断是否全部转为大写
print(str_1.upper().isupper())

# 5. lower 转小写,并不会改变原有的字符串
print(str_1.lower())
print(str_1.lower().islower())

# 6. capitalize 首字母大写 其余小写,并不会改变原有的字符串
print(str_1.capitalize())

# 7. swapcase 大小写转换,并不会改变原有的字符串
print(str_1.swapcase())

str_2 = "   abcd   "
# 8. strip 删除左右空格,并不会改变原有的字符串
print(str_2.strip())

# 9. lstrip 删除左空白,并不会改变原有的字符串
print(str_2.lstrip())

# 9. rstrip 删除右空白,并不会改变原有的字符串
print(str_2.rstrip())

# 10. join() 用指定符号对字符串进行拼接
#       join后跟字符串,前面才是指定拼接的字符
#       并不会改变原有的字符串
print("+".join(str_1))
print(str_1)

# 11. replace 替换 ,并不会改变原有的字符串
str_3 = "aaa"
print(str_1.replace("abc", str_3))
print(str_1)

# 12. split 切割字符串
#  如果不加split后面不加指定的分割字符如“+”“-”“.”等,默认为空格
str_4 = "a-b-c-d-e"
print(str_4.split("-"))
print(str_4)

# 13. startswith   判断是不是以某一个字符或字符串开头,若是返回True 若不是返回False
print(str_1.startswith("abc"))

# 14. endswith   判断是不是以某一个字符或字符串结尾,若是返回True 若不是返回False
print(str_1.endswith("dfn"))

# 15. isalpha 判断是不是纯字母,单个字符或者一个字符串,若是则返回True 若不是则返回False
print(str_1.isalpha())

# 16. isdigit 判断是不是纯数字,单个字符或者一个字符串,若是则返回True 若不是则返回False
print("123".isdigit())

# 17. isalnum  判断是不是纯数字或者是纯字母,单个字符或者一个字符串,若是则返回True 若不是则返回False
print("adgagag".isalnum())

# 18. center 居中 它有两个参数,第一个是字符串的总长度,第二个是需要填充的字符(若没有指定字符,默认为空格)
str_5 = "tiam"
print(str_5.center(10, "*"))

# 19. ljust 居左 它有两个参数,第一个是字符串的总长度,第二个是需要填充的字符(若没有指定字符,默认为空格)
print(str_5.ljust(10, "*"))

# 20. rjust 居右 它有两个参数,第一个是字符串的总长度,第二个是需要填充的字符(若没有指定字符,默认为空格)
print(str_5.rjust(10, "*"))



# 遍历字符串
# 1. 不关注索引
for i in str_1:
    print(i)

# 2. 关注索引
for i in range(len(str_1)):
    print(str_1[i])

列表常用方法及遍历

# 定义一个空列表
l = list()
print(type(l))    # <class 'list'>

# 定义一个非空列表
l = [1, 85, 4187, 485, 45, 45, 5, 41]
print(l)            # [1, 85, 4187, 485, 45, 45, 5, 41]

# 列表的索引范围是 0(第一个) 到 len -1(最后一个)
print(l[0])             # 1
print(l[len(l) - 1])    # 41

# 列表的索引范围也可以是 -1(最后一个) 到 -len(第一个)
print(l[-1])            # 41
print(l[-len(l)])       # 1

# 列表的常用方法

# 1. index 返回指定元素第一次出现的下标,若没有则报错
print(l.index(45))      # 4
# print(l.index(3))    # 列表中没有3这个元素,会报错

# 2. count 统计某个元素出现的次数
print(l.count(45))      # 2

# 3. append 在末尾添加元素
l.append(1)
print(l)                # [1, 85, 4187, 485, 45, 45, 5, 41, 1]

# 4. insert 在指定位置插入指定元素
# 在下标为2的位置插入66 ,后面的元素后移
l.insert(2, 66)
print(l)                # [1, 85, 66, 4187, 485, 45, 45, 5, 41, 1]

# 5. extend 在末尾添加多个元素 若是字符串则会将字符串进行拆分在依次放到列表中
# str = "4554354 d 阿萨"
# l.extend(str)
l1 = [4564, 454, 666]
l.extend(l1)
print(l)                # [1, 85, 66, 4187, 485, 45, 45, 5, 41, 1, 4564, 454, 666]
# 6. reverse  将列表进行逆序
l.reverse()
print(l)                # [666, 454, 4564, 1, 41, 5, 45, 45, 485, 4187, 66, 85, 1]

# 7. sort 排序 当列表中的元素都是int型时才能进行排序
l.sort()
print(l)                # [1, 1, 5, 41, 45, 45, 66, 85, 454, 485, 666, 4187, 4564]
# 进行降序排序
l.sort(reverse=True)
print(l)                # [4564, 4187, 666, 485, 454, 85, 66, 45, 45, 41, 5, 1, 1]

# 8. 列表的最大最小值
print(max(l))           # 4564
print(min(l))           # 1

# 9. pop 删除指定下标的元素,没有指定默认删除最后一个,pop有返回值,返回的是删除的值
xx = l.pop()
print(xx)               # 1
print(l)                # [4564, 4187, 666, 485, 454, 85, 66, 45, 45, 41, 5, 1]
l.pop(2)
print(l)                # [4564, 4187, 485, 454, 85, 66, 45, 45, 41, 5, 1]

# 10. remove 删除指定的值,没有则报错,如有有另一个相同的值,则就删除第一次出现的那个
l.remove(45)            
# l.remove(654354)     # 报错
print(l)				# [4564, 4187, 485, 454, 85, 66, 45, 41, 5, 1]

# 遍历列表
# 1. 不关注索引遍历
for i in l:
    print(i)

# 2. 关注索引遍历
for i in range(len(l)):
    print(l[i])

# 清空列表
l.clear()
print(l)

切片

# 对于切片的认识
l = [1, 2, 48, 4, 54, 123, 165, 465]

# 这行代码的输出与 print(l) 的输出一样
# 第一个冒号代表从头开始(下标),第二个冒号代表到最后结束,最后的1就是隔几个输出一个也就是步长
# [start(包含) : stop(不包含) : step]
print(l[::1])
# 代表了从下标为1的开始打印,打到下标为2的截至,每1个打印一次
print(l[1:3:1])
# 代表了从下标为6的开始打印,打到下标为2的截至,每2个打印一次(这个是逆序打印)
print(l[6:1:-2])

# 当start > stop  step 为负值才能打印出来
# 当start < stop  step 为正值才能打印出来

# 当 start 和 stop 都为冒号时,切片会根据step进行推导
print(l[::-1])

元组

# 元组是一个不可变数据类型(只能拿数据,遍历数据,不能更改数据)
# 定义一个空元组
t = tuple()
print(type(t))
# 定义一个非空元组
t = (123, 15, 1, 545, 3, 1, 1, "4145")

# 常用的方法
# 1. index 返回某元素第一次出现的索引
print(t.index(1))
# 2. count 统计某个元素出现的次数
print(t.count(1))

# 遍历元组
# 直接遍历
for i in t:
    print(i)

# 通过下标进行遍历
for i in range(len(t)):
    print(t[i])

字典

# 定义一个空字典
d = dict()
print(type(d))
# 定义一个非空字典
d = {
    "name": "张三",
    "sex": "男"
}
print(type(d))

# 为字典添加一个键值对
d["age"] = 18
print(d)

# 字典的常用方法
# 1. 判断某个键是否在字典中
if "name" in d:
    print("这个键在字典中")
else:
    print("这个键不在字典中")
# 2. 获取字典中所有的key,以列表的方式进行返回
print(d.keys())
# 3. 获取字典中所有的value,以列表的方式进行返回
print(d.values())
# 4. 获得所有的键值对,以列表的方式进行返回
print(d.items())
# 拿到某一个key的值 ,直接拿的话,若字典中没有需要的值则会报错
temp = d["name"]
# temp = d["class"]         # 没有对应的key 进行报错
print(temp)
# 5. 用get方法拿值,这种方法若没有对应的key,不会进行报错,   如果没有对应的key,可以在参数写一个默认值
temp = d.get("name", 123)
temp = d.get("class", 123)
print(temp)
# 6. 更新(合并)字典 ****比较重要
d.update(
    {
        "name": "李四",
        "address": "河南省"
    }
)
print(d)

# 7. 删除键值对,并返回删除键所对应的值
# print(d.pop("address"))

# 8. 删除对后一个键值对
# print(d.popitem())

# 字典的遍历方法
# 1. 通过key进行遍历
for i in d.keys():
    print(d[i])
# 2. 直接获取所有的值,不通过key
for i in d.values():
    print(i)
# 3. 获取所有的键值对进行遍历,可以拿到所有的key和value
for key, value in d.items():
    print(key, value)

# 删除字典
print(d.clear())  # None

集合

# 定义集合  注意和字典机进行区分
# set 无序且不可重复
set0 = set()
set1 = {12, 74, 88}
print(type(set1))

for e in set1:
    print(e)

# add可向set添加一个值
set1.add(6)
print(set1)

# update相当于合并数据
set1.update({1, 12, 3, 6})
print(set1)

# 删除指定值 remove在删除集合中不存在的元素是会报错,但是discard不会,这两个方法都没有返回值
print(set1.remove(12))		# None
print(set1.discard(13))		# None
print(set1)
# 清空集合
set1.clear()
print(set1)		# set()

# set1 = {45, 15, 21, 2, 14}
# set2 = {54, 45, 48, 15, 5}
# # 集合交集的两种写法
# print(set1.intersection(set2))
# print(set1 & set2)
#
# # 集合并集的两种写法
# print(set1.union(set2))
# print(set1 | set2)
#
# # 集合差集的两种写法
# print(set1.difference(set2))
# print(set1 - set2)
#
# print(set2.difference(set1))
# print(set2 - set1)

推导式

# 生成多个数据比较方便
# 列表推导式
l0 = [x for x in range(1, 100) if x > 10]
print(l0, type(l0))

# 元组推导式
s0 = (x for x in range(1, 10))
for i in s0:
    print(i, end=" ")
print(s0, type(s0))

# 字典推导式
d0 = {f"key_{x}": f"value_{x}" for x in range(10)}
print(d0, type(d0))

# 集合推导式
set0 = {f"{x}" for x in range(10)}
print(set0, type(set0))

copy

# 测试拷贝
import copy

# 1. 等号赋值
l = [1, 2, ["A", "B"]]
l1 = l
l[0] = 10
print(l1)
print(id(l), id(l1))


# 2. 浅拷贝copy
# 浅层拷贝是指拷贝一个对象时,只拷贝该对象的引用,并不拷贝对象中的元素。如果原对象中的元素是可变对象(如列表、字典等),则拷贝后的对象与原对象共享这些可变对象。
l = [1, 2, ["A", "B"]]
l1 = l.copy()
l[0] = 10
l[2].append("C")
print(l1)
print(id(l[2]),id(l1[2]))

# 3. 深拷贝 copy.deepcopy
# 深层拷贝是指拷贝一个对象时,不仅拷贝该对象的引用,还会递归拷贝对象中的元素,使得拷贝后的对象与原对象完全独立,互不影响。
l = [1, 2, ["A", "B"]]
l1 = copy.deepcopy(l)
l[0] = 10
l[2].append("C")
print(l1)
print(id(l[2]), id(l1[2]))

# 拷贝°与深拷贝的区别?
'''在Python中,浅拷贝(ShallowCopyQ)与深拷贝(Deep Copy)主要涉及复杂对象(如列表、字典等)的复制方式,这两种复制方式处理对象内部的子对象的方式不同。
	浅拷贝创建一个新对象,其内容是原对象内各元素的引|用。如果原对象包含的是不可变对象(如字符串、整数等),这种区别几乎察觉不到。但如果对象包含的是可变对象(如列表、字典等),修改新对象中的可变元素将影响到原对象,因为两者引用的是同一个可变元素。Python标准库中的copy模块提供的copy函数可以用来执行浅拷贝。
	深拷贝不仅复制了原对象,而且递归地复制了对象内的所有可变元素及其包含的所有元素,因此原对象和新对象完全独立。对新对象的任何修改都不会影响原对象,反之亦然。这在处理包含复杂、嵌套对象的情况时非常有用。copy模块提供的deepcopy()函数用于执行深拷贝。'''

装饰器

# 什么是装饰器
# 在不改变函数原有功能(实现)的情况下,对其增加新的功能
# 比如说对原有函数增加一个时间统计类,或者说给原有函数增加一个权限校验的功能

# 装饰器是根据闭包进行实现的,那么什么是闭包呢
# 在Python中,闭包(Closure)是一种函数,它能够记住并访问其词法作用域,即使函数在其作用域之外执行。
# 闭包的概念与匿名函数或函数对象紧密相关,但它特指那些能够访问定义在其外部作用域的非全局变量的函数。

# 闭包(三个必要的条件)
# 1. 外部函数嵌套内部函数
# 2. 外部函数将内部函数返回
# 3. 内部函数可以返回外部函数的局部变量

# 这种结构允许内部函数记住外部函数的环境,即使外部函数已经执行完毕。这个特性使得闭包成为实现数据隐藏和封装的强大工具。
# 闭包的使用场景:
# 保持状态:闭包可以记住和继续访问定义它们的函数的局部变量,这对于实现类似于对象的状态保持非常有用。
# 数据封装:通过闭包,可以创建私有变量,这些变量只能通过闭包提供的方法访问,而不是直接访问。
# 回调函数:在事件驱动或异步编程中,闭包允许回调函数访问与事件处理相关的额外数据。


import time

# 一个计算函数运行时间的装饰器
def count_time(f):
    # 计算运行时间装饰器的内部类,要被外部函数返回
    def count():
        # 在内部函数中对原有函数增加计算运行时间的功能
        start = time.time()
        f()
        end = time.time()
        print(f"{f.__name__}运行时间为:{end - start}")
    return count

def req(f):
    def check():
        user = input("请输入用户名:")
        pwd = input("请输入密码:")
        if user == "admin" and pwd == "123":
            f()
        else:
            print("权限不足!")
    return check
@count_time
@req
def login():
    time.sleep(2)
    print("登录成功")


login()

标签:知识点,python,45,字符串,自用,set1,str,print,拷贝
From: https://www.cnblogs.com/Leybxin-AXB/p/18248505

相关文章

  • 入门学习Python的十个建议
    引言不知不觉中,我接触python已经十年有余了。在这十年中,我见证了Python从一个相对小众的编程语言,成长为如今数据科学、人工智能和自动化领域的主力军。Python的简洁性、强大的库支持和广泛的社区使其成为了许多开发者的首选工具。在这篇文章中,我将分享一些学习Python的建议,希......
  • Python基本知识:List切片
    什么是List切片?在Python中,列表(List)是一种非常常用的数据结构,它可以存储多个元素。有时候,我们需要对列表进行切片操作,即从列表中提取一部分元素。List切片就是这样一种操作,它允许我们从一个列表中提取出一部分元素,形成一个新列表。List切片的基本语法List切片的基本语法如下:lis......
  • Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据
    全文链接:https://tecdat.cn/?p=36004原文出处:拓端数据部落公众号随着大数据时代的来临,深度学习技术在各个领域中得到了广泛的应用。长短期记忆(LSTM)网络作为深度学习领域中的一种重要模型,因其对序列数据的强大处理能力,在自然语言处理、时间序列预测等领域中取得了显著的成果。然......
  • python watchdog检测到文件产生,动态创建进程,不指定进程数去处理,处理过程中需要写文件,
    如果希望在检测到文件时动态创建进程而不预先指定进程数,并确保写文件时不发生冲突,可以使用队列和锁的机制。以下是一个改进的方案:pythonfrommultiprocessingimportProcess,Queue,Lockfromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemE......
  • 【Python&GIS】基于Arcpy修改mxd版本
        我们在使用ArcGIS时有时候保存或别人发过来的mxd工程文件会打不开,大概率是因为mxd保存的版本不一样,ArcGIS可以使用高版本打开低版本保存的mxd,反之则不行,所以今天给大家分享一下如何修改mxd版本。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804......
  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
        之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库import......
  • Python下3种文字识别工具的源码和效果比较
    1.pytesseractimportpytesseractfromPILimportImageim=Image.open(r'C:/Users/YBK/Pictures/35005.jpg')string=pytesseract.image_to_string(im,lang='chi_sim')print(string)2.paddleocrfrompaddleocrimportPaddleOCR,draw_ocroc......
  • Linux下的python的部署
    一、python的验证一般情况下liunx系统都会自带python输入python--version便可以查看当前安装的python版本二、Linux系统下安装anaconda步骤大纲:下载anaconda文件→更改文件的权限→开始安装→完成交互问题(更改安装位置)→配置环境变量→更改文件目录权限2.1、下载anacon......
  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
    ​     之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库imp......
  • 浙大版PTA python程序设计 第七章题目解析
    一、判断题1.以"w"模式打开的文件无法进行读操作。  -正确。以"w"模式(写入模式)打开文件时,只允许写操作,不能进行读操作。如果尝试读操作会引发错误。2.Pandas库是用于图像处理的库。  -错误。Pandas库主要用于数据处理和分析,不是用于图像处理的。图像处理通常......