python常用内置方法
常用内建函数
# 如何在遍历一个列表的同时获取当前下标?
# 普通人的做法
list = [1, 2, 3, 4, 5, 6]
index = 0
for i in list:
print('下标%s' % index, i)
index += 1 # 大佬的做法
list = [1, 2, 3, 4, 5, 6]
for i, j in enumerate(list):
print('下标%s' % i, j)
# 如何使用函数修饰被迭代对象来优化循环
# 普通人的做法
list1 = [1, 2, 3, 4, 5, 6]
list2 = [2, 3, 4, 5, 6, 7]
list3 = [3, 4, 5, 6, 7, 8]
for i in list1:
for j in list2:
for k in list3:
if i + j + k == 10:
print(i, j, k)
# 大佬的做法
from itertools import product
for i, j, k in product(list1, list2, list3):
if i + j + k == 10:
print(i, j, k)
#无限迭代器的使用
#普通人的做法
na = 2
while True:
print(na)
na +=1 #大佬的做法
from itertools import count
for i in count(2):#参数:表示从几开始
print(i)
#无限重复之迭代器的使用
#普通人都做法
res = 'ABC'
while True:
for i in res:
print(i) #大佬的做法
from itertools import cycle
for i in cycle('ABC'):
print(i)
#如何找到列表中的元素进行无限重复,并可用控制重复的次数
#普通人都做法
list = [1,2,3,4,5,6]
for i in list:
if i==list[2]:
for j in range(10):
print('',list[2]) #大佬的做法
from itertools import repeat
list = [1,2,3,4,5,6]
res = repeat(list[2],10)#参数一:表示从几开始,参数二:表示重复次数
for i in res:
print('',i)
# 如何使用 islice 实现循环内隔行处理
需要把a.txt文件中的'---'去掉
1234
---
aadd
---
sadsad
---
asdasdad
# 普通人的做法
def test():
with open('a.txt', 'r') as fp:
for i, line in enumerate(fp):
# 跳过无意义的 '---' 分隔符
if i % 2 == 0:
yield line.strip()
for i in test():
print(i) # 大佬的做法
from itertools import islice
# islice(seq, start, end, step) 函数和数组切片操作*( list[start:stop:step] )有着几乎一模一样的参数。
# 如果需要在循环内部进行隔行处理的话,只要设置第三个递进步长参数 step 值为 2 即可(默认为 1 )*。
def parse_titles_v2():
with open('a.txt', 'r') as fp:
# 设置 step=2,跳过无意义的 '---' 分隔符
for line in islice(fp, 0, None, 2):
yield line.strip()
for i in parse_titles_v2():
print(i)
# 使用 takewhile 替代 break 语句
# 普通人的做法
list = [1, 2, 3, 4, 5, 6]
for i in list:
if i == 4:
break
else:
print(i) # 大佬的做法
from itertools import takewhile
list = [1, 2, 3, 4, 5, 6]
for i in takewhile(lambda x: x != 4, list):#参数一:限制条件函数,list表
print(i)
#如何使用列表链(将一组迭代对象串起来,形成一个更大的迭代器)
#普通人的做法
v1 = [11,22,33]
v2 = [44,55,66]
all = v1+v2
for c in all:
print(c) #大佬的做法
from itertools import chain
v1 = [11,22,33]
v2 = [44,55,66]
new_list = chain(v1,v2)
for c in new_list:
print(c)
#偏函数的使用
from functools import partial
def fuc1(a1,a2):#一个函数有两个参数
print('fuc1',a1,a2)
return a1-a2
def fuc2(a3,a4):
print('fuc2',a3,a4)
return a3+a4
new_fuc = partial(fuc1,fuc2(1,2))#functools.partial可以传函数名和fuc的第一个参数
res = new_fuc(3)
print(res)
#----------结果
#fuc2 1 2
#fuc1 3 3
#
# 这样理解执行函数先执行fuc2,打印fuc2 1 2
# fuc2的返回值和fuc1函数存放在new_fuc对象中
# new_fuc(3),把3传入fuc1函数的a1,把fuc2返回值放入a2,打印fuc2 3 3
# res打印0
累加
from itertools import accumulate
_list = [1,2,3,4,5,6]
print(list(accumulate(_list)))#[1, 3, 6, 10, 15, 21]
#实现累加的函数
importlib内置模块
文件目录
#a.py
class A(object):
def public(self):
print('aaa')
#b.py
class B(object):
def public(self):
print('bbb')
#c.py
class C(object):
def public(self):
print('ccc')
#co.py
from importlib import import_module
M = [
'util.a.A',
'util.b.B',
'util.c.C',
]
for m in M:
import_class,method_class = m.rsplit('.',maxsplit=1) #按最后右边的'.'分割,获取文件路径对象名称和成员对象名称,maxsplit=1表示最大分割一次
r = import_module(import_class) #自动导入文件
oo =getattr(r,method_class) #获取导入文件中的成员对象,此时oo就是每个class对象
res = oo() #实例化
res.public() #执行公共方法
#借鉴了jdango中使用字符串导入模块的功能,好处是减少耦合,功能模块可以自如开关
# 普通人的做法
class Api1:
def __init__(self, b: tuple):
self.a: tuple = (1, 2, 3, 4,)
self.b: b = self.a + b res1 = Api1((5, 6,))
print(res1.a) # (1, 2, 3, 4)
print(res1.b) # (1, 2, 3, 4, 5, 6) # 大佬的做法
class Api2:
def __init__(self, b: tuple):
self.a = (1, 2, 3, 4,)
self.b = self.a + b res2 = Api2((5, 6,))
print(res2.a) # (1, 2, 3, 4)
print(res2.b) # (1, 2, 3, 4, 5, 6)
python常用内置方法的更多相关文章
- 递归,装饰器,python常用内置方法
**递归** def calc(n): print(n) if int(n / 2) == 0: 条件判断 r ...
- python常用内置方法index\extend\count\reverse\sort
定义列表:(有2个值相同) a = ['XiaoBao','aiaoHao','biaoLiao','ciaoQing','eiaoLi','QiBao','biaoLiao'] 列表的索引: fir ...
- python字符串常用内置方法
python字符串常用内置方法 定义: 字符串是一个有序的字符的集合,用与存储和表示基本的文本信息. python中引号中间包含的就是字符串. # s1='hello world' # s2=&quo ...
- python迭代器-迭代器取值-for循环-生成器-yield-生成器表达式-常用内置方法-面向过程编程-05
迭代器 迭代器 迭代: # 更新换代(其实也是重复)的过程,每一次的迭代都必须基于上一次的结果(上一次与这一次之间必须是有关系的) 迭代器: # 迭代取值的工具 为什么用迭代器: # 迭代器提供了一种 ...
- 迭代器,for循环本质,生成器,常用内置方法,面向过程编程
一.迭代器 1.迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果 迭代器:迭代取值的工具 2.迭代器给你提供了一种不依赖于索引取值的方式 3.可以迭代取值的对象:字符串,列表,元组,字典 ...
- python常用内置函数和关键字
常用内置方法 在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作. 查看所有的内置类和内置方法 # 方法一 bu ...
- python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
- Python的内置方法,abs,all,any,basestring,bin,bool,bytearray,callable,chr,cmp,complex,divmod
Python的内置方法 abs(X):返回一个数的绝对值,X可以是一个整数,长整型,或者浮点数,如果X是一个复数,此方法返回此复数的绝对值(此复数与它的共轭复数的乘积的平方根) >>> ...
- Python 类的常用内置方法
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,类的内置方法,会在满足某种条件下自动触发. 1.1__new__ __new__:在___init__触发前, ...
随机推荐
- cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.怎么解决
我是在使用anaconda的Spyder写一个数字识别的任务的时候遇到这个问题的,当时我以为是我的函数库有问题,然后安装了很多东西都没用,然后百度的答案都很模糊,在我尝试了一天一下午之后,找到了问题原 ...
- Action<T>和Func<T>委托事例
Action<T>和Func<T>委托事例 using System; //除了为每个参数和返回类型定义一个新委托类型之外,还可以使用Action<T>和Func& ...
- Valgrind工具------可以分析内存泄漏
Valgrind 是个开源的工具,功能很多.例如检查内存泄漏工具---memcheck. 安装: 1)官网下载:http://www.valgrind.org/downloads/ , 下载tar.b ...
- nginx tar包安装 包含openssl,rewrite,stream,sticky 等模块
最近需要使用nginx 但是发现有时缺少一些模块. 所以 在学习如何增加上相应的模块. 主要学习的网站: 沧海书生 Ansible爱好者 https://www.cnblogs.com/tssc/p/ ...
- Asp.Net Core 调用第三方Open API查询物流数据
在我们的业务中不可避免要与第三方的系统进行交互,调用他们提供的API来获取相应的数据,那么对于这样的情况该怎样进行处理呢?下面就结合自己对接跨越速运接口来获取一个发运单完整的物流信息为例来说明如何在A ...
- Fiddler使其在HttpURLConnection下正常抓包
像陌陌这样使用HttpURLConnection进行通讯的APP还是无能为力 还需要对fiddler进行如下设置: 点击"Rules->CustomizeRules"; 在这 ...
- Mac中设置Sublime快速在终端中使用命令打开项目
工作中用Atom比较多,比较喜欢Atom可以直接在终端中直接输入atom .就能直接打开项目的功能,于是搜索得知sublime text也有这样的功能,下面就简单的配置了一下: sudo ln -s ...
- Word 文档内超级链接跳转到书签
1. 前言 在Word文档内如何实现一些跳转的超链接呢?Word中,一些外部链接,我们通常叫作超链接,内部链接我们可以叫书签.如何在文档中如何使用书签,跳转到指定位置? 这里我在网上随便找了一份模拟试 ...
- jvm--工具
jps (java process status) == ps / top 作用:显示所有运行中的java进程. jstat 作用:查看类装载,内存,垃圾收集,jit编译的信息. jinfo 作用:实 ...
- 运输计划[二分答案 LCA 树上差分]
也许更好的阅读体验 \(\mathcal{Description}\) 原题链接 概括一下题意 给一颗有\(n\)个点带边权的树,有\(m\)个询问,每次询问\(u,v\)两点间的权值和,你可以将树中 ...