python日常总结

目录

1.生成器:

2.迭代器:

3.生成器和迭代器的区别:

4.对Execl文件进行读取:

5.使用匿名函数和进行取值:

6.将数据写入csv文件中:

7.找到计算机自带字体格式:

8.python中__init__魔法方法:

9.python中__new__魔法方法:

10.python中__del__魔法方法:


1.生成器:

        有两种方式:

        生成器函数(Generator Function):生成器函数是一种特殊的函数,使用关键字yield来将值生成出来。当函数中执行到yield语句时,函数会返回一个值,并将其状态冻结在当前位置,以便下次调用时从冻结的位置继续执行。每次调用生成器函数,都会生成一个新的值,直到生成器函数执行完毕。

def fibonacci_generator():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b


fib = fibonacci_generator()
print(next(fib)) # 输出: 0
print(next(fib)) # 输出: 1
print(next(fib)) # 输出: 1
print(next(fib)) # 输出: 2
# ...

        生成器表达式(Generator Expression):生成器表达式类似于列表推导式,用于快速创建生成器对象。与列表推导式不同的是,生成器表达式使用圆括号来包裹,并使用惰性计算的方式生成值。

odd_generator = (x for x in range(1, 10) if x % 2 != 0)
for i in odd_generator:
    print(i)
2.迭代器:
  1. __iter__():返回迭代器对象本身。这个方法在迭代器初始化时被调用。

  2. __next__():返回迭代器中的下一个元素。如果没有更多的元素可迭代,它会引发StopIteration异常。

class MyIterator:
    def __init__(self, max_num):
        self.max_num = max_num
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.max_num:
            num = self.current
            self.current += 1
            return num
        else:
            raise StopIteration

# 创建一个迭代器对象
my_iterator = MyIterator(5)

# 使用for循环遍历迭代器中的元素
for num in my_iterator:
    print(num)
# 输出:0 1 2 3 4
3.生成器和迭代器的区别:

        1.语法和定义方式:生成器使用特定的语法(如yield关键字)来定义生成数据的算法,使得生成器的定义更加简洁和直观。而迭代器则需要实现特定的方法(如iter_0和_next__0)来支持选代操作。
        2.内部状态的保存:生成器具有内部状态,因此在每次生成数据时,它们会自动保存生成的位置和内部变量的值。这意味着生成器可以在下次请求生成时从暂停的位置继续生成数据。而迭代器通常需要手动管理状态,例如使用变量来记录当前位置。
        3.内存占用:生成器以惰性方式逐个生成数据项,并且只在需要时才生成数据。这使得生成器在处理大规模数据集或无限序列时非常高效,因为它们不需要一次性加载所有数据到内存中。相比之下,迭代器可能需要提前加载所有数据到内存中,因此可能占用更多的内存空间。
        4.可选代性:生成器可以被视为可迭代对象,因为它们可以使用for循环进行遍历,或者可以通过调用iter0函数来获取迭代器。而迭代器本身是可迭代对象,因此可以直接使用for循环进行遍历。

4.对Execl文件进行读取:
# coding=gb2312
import pandas as pd
 
ff = pd.read_excel("文件名.xlsx")
dict_n = {}
fen = []
name = []
data = []
 
 
for i, j in ff.iterrows():
    # isinstance判断一个对象是不是字符串
    if isinstance(j[1], str):
        continue
    else:
        fen.append(j[1])
        name.append(j[0])
        data.append([j[0], j[1]])
print(name)
5.使用匿名函数和进行取值:
# 前三名,使用匿名函数和高阶函数,切片进行取值
qian = sorted(data, key=lambda x: x[1], reverse=True)[:3]
print(qian)
# 后三名
nnn = sorted(data, key=lambda x: x[1], reverse=True)[-3:]
print(nnn)
6.将数据写入csv文件中:
# 向文件写入前三名
import csv


# 成绩排名信息
rankings = qian


# 构建文件名
filename = f"文件名.csv"

# 写入CSV文件
with open(filename, 'w', newline='', encoding='utf-8-sig') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(rankings)  # 写入数据

print(f"{filename}")
7.找到计算机自带字体格式:
'C:/Windows/Fonts/simhei.ttf'
8.python中__init__魔法方法:
# 对象初始化时执行
class Test:
    def __init__(self,name,age):
        self.name = name
        self.age = age
        print("名字:"+self.name)
        print("年龄:"+self.age)

if __name__ == '__main__':
    a = Test("张三","12")
9.python中__new__魔法方法:
# 为该对象分配内存空间
class Test:
    def __new__(cls, *args, **kwargs):
        obj = object.__new__(cls)
        print(obj)
        return obj

    def __init__(self):
        print(self)


if __name__ == '__main__':
    a = Test()
10.python中__del__魔法方法:
# 对象被删除的时候调用该方法
class Test:
    def __init__(self):
        print("初始化对象")

    def __del__(self):
        print("对象被删除")

if __name__ == '__main__':
    a = Test()
    print("end")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值