python 编程技巧

  在学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 取值很大时)
  • 响应更加迅速
  • 使用更加灵活



  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值