Python中的几个重要函数

map函数

map:是一个映射函数,返回的是一个迭代器,优点是可迭代,不占内存,效率高
列表推导式也可以实现映射变换

def fun(s):
    return s+2
mylist = range(100)
a = map(lambda x:fun(x),mylist)
next(a)

reduce函数

reduce:一个聚合操作

from functools import reduce
def add(x, y) :            # 两数相加
    return x + y
sum1 = reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
print(sum1)
print(sum2)

filter函数

filter:筛选操作

import math
def is_sqr(x):
    return math.sqrt(x) % 1 == 0
 
tmplist = filter(is_sqr, range(1, 101))
newlist = list(tmplist)
print(newlist)

yield函数

yield:是一个类似于 return 的关键字,迭代一次就会返回一次。
作用:把一个函数变成一个生成器,优点是大大减少内存占用。

read(),readline(),realines()三者的区别

参考:https://zhuanlan.zhihu.com/p/26573496

read()每次读取整个文件,将文件内容放到一个字符串变量中,得到的是一个字符串类型;

readline()每次只读取文件的一行,每一行放到一个字符串变量中,得到的也是字符串类型;

redlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中。

比较如下:

  • read()和readlines()两个方法对于大文件是无法使用的;
  • readline()比readlines()慢得多

yield函数读取大文件

直接读取

def read_file(fpath): 
    BLOCK_SIZE = 1024 
    with open(fpath, 'rb') as f: 
        while True: 
            block = f.read(BLOCK_SIZE) 
            if block: 
                yield block 
            else: 
                return

按行读取

def read_file(fpath):
    with open(fpath, 'r', encoding='utf-8') as f:
        line = f.readline()
        while line:
            yield line
            line = f.readline()

字符串格式化

字符串格式化的三种方法:
%s 字符串 %d 十进制
.format()
f’{}’

print("我叫%s,今年%d" %("zhang",22))
print("我叫{},今年{}".format("zhang",22))
print(f"我叫{'zhang'},今年{22}")

python中 r’’, b’’, u’’, f’’ 的含义

https://blog.csdn.net/qq_35290785/article/details/90634344
r 开头的作用是去除转义字符。

str1= 'input\n'
str= r'input\n'
print(str1)
print(str)
# input
# input\n

以 f 开头表示在字符串内支持大括号内的python 表达式

import time
t0 = time.time()
time.sleep(1)
name = 'processing'
# 以 f开头表示在字符串内支持大括号内的python 表达式
print(f'{name} done in {time.time() - t0:.2f} s')

processing done in 1.01 s

b" "前缀表示:后面字符串是bytes 类型。

用处:网络编程中,服务器和浏览器只认bytes 类型数据。

如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

在 Python3 中,bytes 和 str 的互相转换方式是

str.encode(‘utf-8’)

bytes.decode(‘utf-8’)

字符串前加 u

例:u"我是含有中文字符组成的字符串。"

后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

迭代器和生成器

迭代器:是一个带状态的对象,能在调用next()的时候返回下一个值,一般使用了__iter__和__next__()这两个方法,一个用于返回自身,一个用于返回下一个值。
生成器:通常是由yield关键词返回结果得到的对象,生成器一定是迭代器,反之不成立。

猜你喜欢

转载自blog.csdn.net/dzysunshine/article/details/118303849