精华内容
下载资源
问答
  • Python 编程技巧

    2019-01-17 09:58:00
    Python 生成器 Python 处理文件 Python 异常处理 Python 处理输入输出 Python 处理命令行参数 Python 对文件做校验 Python 对目录做遍历 Python 调用外部命令 Python 收集主机信息 Python 正则表达式 ...
    展开全文
  • python 编程技巧

    2019-08-08 14:26:26
      在学python的过程中,遇到了很多看不懂的代码,也学到了一些小技巧,下面是我积累的点点滴滴: Skill 1: emumerate函数 函数原型 :enumerate(sequence, [start=0]) 功能 :将可循环序列sequence以start开始...

      在学python的过程中,遇到了很多看不懂的代码,也学到了一些小技巧,下面是我积累的点点滴滴:

    Skill 1: emumerate函数

    函数原型 :enumerate(sequence, [start=0])
    功能 :将可循环序列sequence以start开始分别列出序列数据和数据下标
    例子 :如果要将一个列表元素列出来,可以这样子:

    iterable = ["apple", "banana", "cherry", "dog"]
    for i, item in enumerate(iterable):
    	print(i, item)
    



    Skill 2: 列表解析

    使用方法 :[] 、不含逗号
    list = [funct(i) for i in range(0, n) [if condition]],其中条件部分可省略

    my_list = [funct(k) for k in range(start, end)]
    

    例子

    squares = [k**2 for k in range(1, 11)]
    print(squares)
    
    输出结果: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    



    Skill 3: 遍历字典

    函数 :values(), keys(), items()

    • keys():返回一个dict_keys类型的数据,可以用for遍历元素
    • values:返回一个dict_values类型的数据,可以用for语句遍历元素
    • 返回一个dict_items类型的元素,包含多个二元组,可以用for语句遍历

    例子

    dictionary = {"a": "Python", "b": "Java", "c": "C++"}
    for key in dictionary.keys():
    	print(key)
    for value in dictionary.values():
    	print(value)
    for item in dictionary.items():
    	print(item)
    for key, value in dictionary.items():
    	print(key, value)
    



    Skill 4: eval函数

    函数原型 :eval(expression, [globals], [locals])
    功能 :eval() 函数用来执行一个字符串表达式,并返回表达式的值。
    例子

    str = "print(2**4)"
    eval(str)
    



    Skill 5: 列表/字符串 逆序

    方法1:调用reverse()函数

    a = [1, 2, 3, 4]
    a.reverse()
    print(a)
    

    方法3:使用str[::-1],返回逆序序列/字符串,但不修改原来的字符串/序列

    a = [1, 2, 3, 4]
    s = "abcdefg"
    
    print(a[::-1])
    print(s[::-1])
    



    Skill 6: 三元运算

      三元运算符是if-else的快捷操作,被被称为条件运算。类似C++里面的:n = (condition ? a : b) —— 满足条件时n=a,否则n=b
    使用

    [on_true] if [expression] else [on_false]
    x, y = 50, 25
    small = x if x < y else y
    



    Skill 7: if结果简化

    使用

    if n in [1, 2, 3, 4]:
    if n==1 or n==2 or n==3 or n==4:
    



    Skill 8: filter函数

    函数原型 :filter(function, iterable)
    功能 :序列中的每个元素作为参数传递给函数进行判断,返回True或者False,最后将返回True的元素放到新列表中.
    例子

    def is_odd(n):
        return n%2 == 1
    
    L = [1, 2, 3, 4, 5, 6, 7, 8]
    L1 = list(filter(is_odd, L))
    
    print("L1 = ", L1)
    print("L = ", L)
    



    Skill 9: pass

    使用:pass可以构造处不做任何事情的主体,pass什么也没做,只是为了占位

    for i in range(0, 11):
    	pass
    
    def function(arg):
    	pass
    
    class L():
    	pass
    



    Skill 10: lambda

    简介lambda可以用来定义简单函数,是匿名函数。
    特点

    1. lambda定义的是单行函数
    2. lambda参数列表可以包含多个参数,如 lambda x, y: x + y
    3. 默认返回表达式中的计算结果

    语法

    funct = lambda arguments :function_body
    

    参数个数

    funct = lambda : 1
    funct = lambda a1, a2 : a1+a2
    

    功能

    funct = lambda a : a%2 == 0
    
    def funct(a):
    	return a%2 == 0
    print(funct(2))
    



    Skill 11: yield关键字

      当执行到yield语句时,函数会被冻结,函数返回数值,下一次执行函数从上一次冻结的位置开始。
    使用

    def gen(n):
    	for i in range(n):
    		yield i**2
    
    for i in gen(5):
    	print(i, " ", end="")
    

    对比: yield 普通写法
    前者占用1个空间,后者占用n个空间

    def gen(n):
    	for i in range(n):
    		yield i**2
    
    def square(n):
    	ls = [i**2 for i in range(n)]
    	return ls
    
    for i in gen(5):
    	print(i, " ", end="")
    
    print("")
    
    for i in square(5):
    	print(i, " ", end="")
    

    使用yield优势

    • 更节省存储空间(当 n 取值很大时)
    • 响应更加迅速
    • 使用更加灵活



    展开全文
  • Python编程技巧

    2020-04-22 19:49:26
    Python性能优化技巧 列表 排序:sort()、sorted() 1. 列表排序后的索引 arr = [1,2,3,0,1,9,8] sorted(range(len(arr)), key=lambda k: arr[k]) [3, 0, 4, 1, 2, 6, 5] 2. 两个维度均降序(优先第一个维度) arr=[...

    时间复杂度

    1. 字典与列表

    Python 字典中使用了 hash table,因此查找操作的复杂度为 O(1),而 list 实际是个数组,在 list 中,查找需要遍历整个 list,其复杂度为 O(n),因此对成员的查找访问等操作字典要比 list 更快。

    2. 集合与列表

    set 的 union, intersection,difference 操作要比 list 的迭代要快。因此如果涉及到求 list 交集,并集或者差的问题可以转换为 set 来操作。

    3.循环

    对循环的优化所遵循的原则是尽量减少循环过程中的计算量,有多重循环的尽量将内层的计算提到上一层。

    4.字符串

    python 中的字符串对象是不可改变的,因此对任何字符串的操作如拼接,修改等都将产生一个新的字符串对象,而不是基于原字符串,因此这种持续的 copy 会在一定程度上影响 python 的性能。

    • 在字符串连接的使用尽量使用 join() 而不是 +;
    • 当对字符串可以使用正则表达式或者内置函数来处理的时候,选择内置函数;
    • 对字符进行格式化比直接串联读取要快,因此要使用:
    out = "<html>%s%s%s%s</html>" % (head, prologue, query, tail) 
    

    避免

    out = "<html>" + head + prologue + query + tail + "</html>"
    

    5.列表

    列表解析要比在循环中重新构建一个新的 list 更为高效

    for w in list: 
    	total.append(w) 
    

    列表解析:

    total = [w for w in list] 
    

    6.其他

    • 如果需要交换两个变量的值使用 a,b=b,a 而不是借助中间变量 t=a;a=b;b=t;
    • 使用级联比较 “x < y < z” 而不是 “x < y and y < z”;
    • while 1 要比 while True 更快(当然后者的可读性更好);
    • build in 函数通常较快,add(a,b) 要优于 a+b。

    Python性能优化技巧

    列表

    排序:sort()、sorted()

    1. 列表排序后的索引

    arr = [1,2,3,0,1,9,8]
    sorted(range(len(arr)), key=lambda k: arr[k])
    
    [3, 0, 4, 1, 2, 6, 5]
    

    2. 两个维度均降序(优先第一个维度)

    arr=[[0,0],[1,0],[1,1],[0,1]]
    arr.sort(key=lambda x:[-x[0],-x[1]])
    arr
    
    [[0,0],[0,1],[1,0],[1,1]]
    

    字符串计算:eval()

    1. 利用虚数求解一元一次方程

    eq='2*X+1=3'
    equ=eq.replace('=','-(')+')'
    c=eval(equ,{'X':1j})
    if c.imag==0:
        print(-1)
    else:
        x=-c.real/c.imag
        print(c)
    
    1
    

    进制转换

    • 十进制\rightarrow二进制:bin(num)
    • 十进制\rightarrow八进制:oct(num)
    • 十进制\rightarrow十六进制:hex(num)
    • n进制\rightarrow十进制:int('numstr',n)

    获取整数的个位、十位、百位、。。。

    方法一:

    digit=[]
    while n:
    	digit.append(n%10)
    	n=n//10
    

    方法二:

    digit=[int(_) for _ in str(n)]
    

    collections标准库

    Counter()

    官方教程
    一个 Counter 是一个 dict 的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一样存储,它们的计数存储为值。计数可以是任何整数值,包括0和负数。

    • 统计词频
    from collections import Counter
    colors = ['red', 'blue', 'red', 'green', 'blue', 'blue']
    c = Counter(colors)
    print (dict(c))
    
    • 判断是否包含某元素,可以转化为dict然后通过dict判断,Counter也带有函数可以判断
    c = Counter(['eggs', 'ham'])
    c['bacon']                              # 不存在就返回0
    #0
    
    • 删除元素:
    c['sausage'] = 0                        # counter entry with a zero count
    del c['sausage']   
    
    • 获得所有元素:
    c = Counter(a=4, b=2, c=0, d=-2)
    list(c.elements())
    #['a', 'a', 'a', 'a', 'b', 'b']
    
    • 查看最常见出现的k个元素:
    Counter('abracadabra').most_common(3)
    #[('a', 5), ('r', 2), ('b', 2)]
    
    展开全文
  • python编程技巧

    2019-09-23 14:57:27
    将一个字符串转化成ASCII码并遍历: for c in map(ord,raw_input()): 将一个字符串转化成ASCII码并存储到列表 L = [ord(i)-ord('a') for i in input()] 字典,如果key存在则value+1否则创建(key,...python C...

    将一个字符串转化成ASCII码并遍历:

    for c in map(ord,raw_input()):

    将一个字符串转化成ASCII码并存储到列表

    L = [ord(i)-ord('a') for i in input()]

    字典,如果key存在则value+1否则创建(key,value=0):

    mp[d][sum] = mp[d].get(d,0) + 1

    python Counter()计数器(类似于Multiset):

    对于不存在的key,默认的计数值是0

    from collections import Counter

    用法:https://docs.python.org/3/library/collections.html#collections.Counter

    enumerate,遍历的元素是一个[index,value]的列表

    for i in enumerate(s)

     

    转载于:https://www.cnblogs.com/mcflurry/p/4448003.html

    展开全文
  • 揭秘python编程技巧一、python的标准输入和输出[root@133 wc]# vim stdin.py#!/usr/bin/python#encoding:utf-8import sysfd = sys.stdin #等待键盘输入data = fd.read() #data是记录键盘的输入sys.stdout.write(data...
  • Blender Python编程技巧

    千次阅读 2019-03-03 20:00:59
    Blender Python编程技巧 整理自 https://docs.blender.org/ bpy.data object复制 ob = obj.copy() # duplicate linked ob.data = obj.data.copy() # optional: make this a real duplicate (not linked) bpy.context...
  • 揭秘python编程技巧

    2016-09-14 18:52:10
    揭秘python编程技巧一、python的标准输入和输出[root@133wc]#vimstdin.py #!/usr/bin/python #encoding:utf-8 importsys fd=sys.stdin#等待键盘输入 data=fd.read()#data是记录键盘的输入 sys.stdout.write(data+"\n...
  • Python 开发一种可在CLI中模拟电子邮件应用程序的解决方案。 要求 注册和登录的选项 标准电子邮件操作包括(但不限于)撰写邮件,保存和编辑草稿,发送电子邮件,查看收件箱或发件箱或草稿,删除电子邮件 重点领域 ...
  • python编程技巧之从字典中提取子集
  • python编程技巧.md

    2020-06-11 16:11:27
    python字典排序函数sorted,字符串连接join,格式化输出format函数,包括 数字的类型,模式
  • Python解释器会在执行代码时将Tab当作数个空格来处理,但是到底当成几个,其实没有非常严格的保证。因此如果混用空格和Tab,就有可能使缩进产生问题,造成程序的逻辑混乱。为了代码稳定并且一致,还是建议统一使用...
  • [Python] Python编程技巧

    2019-09-04 09:16:36
    文章目录条件判断大数的显示打开文档list的enumeratezipunpacking为类增加属性 条件判断 condition = False x = 1 if condition else 0 print(x) 大数的显示 num1 = 10_000_000 num2 = 100_000 ...
  • zt:Python编程技巧笔记

    2010-10-16 01:18:00
    zt:Python编程技巧笔记2010/8/4 17:41:09http://www.elias.cn/Develop/PythonHint Python编程技巧笔记 On this page... (hide)1.  易犯错误1.1  避免混用空格和Tab1.2  避免and or语法出错1.3  避免用列表...
  • Python编程技巧笔记 转载自:http://www.elias.cn/Python/PythonHint?from=Develop.PythonHint#toc9 (重定向自Develop.PythonHint) On this page...(hide) 1. 易犯错误 1.1 ...
  • Python 编程技巧之字符串拼接

    千次阅读 2019-06-28 15:07:52
    文章目录字符串的拼接最简单的`+`号拼接使用`%...当我们使用Python时,字符串是最经常打交道的数据类型,要提升Python编程技巧,首先从字符串的拼接开始吧 当我们编写爬虫时,经常遇到类似如下URL http://192.168...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,092
精华内容 1,636
关键字:

python编程技巧

python 订阅