您的位置:首页 > 编程语言 > Python开发

Python编程一些有意思的用法和技巧

2018-01-05 16:50 441 查看
1.原位替换
a = 5
b = 6
c = 7
a,b = b,a
print("a is",a)
print("b is",b)

a = 5
b = 6
c = 7
a, (b,c) = c, (a,b)
print("a is",a)
print("b is",b)
print("c is",c)

a = 5
b = 6
c = 7
a,b,c = c,a,b
print("a is",a)
print("b is",b)
print("c is",c)
2.链似比较
x = 5
print("1 < x < 10 is", 1 < x < 10)
print("10 > x <= 9", 10 > x <= 9)
3.列表索引,反序
a = [1,2,3,4,5,6,7,8,9]
a[::2]
a[::3]
a[::-1]
4.列表解析、字典解析、元组解析
# 获得系列坐标点
a = ((i,j) for i in range(3) for j in range(2))
for i in a:
print(i)

str1 = "I love sheng xin bao dian"
print([i for i in str1.split() if i.endswith('n')])

a = {i:i*2 for i in range(5)}
a

[(x, y) for x in range(4) if x % 2 == 1 for y in range(4)]
5.集合操作
a = set(["sheng", "xin", "bao","dian","best","tutotials"])
b = set(["hong", "ji", "yin","zu","best","tutotials"])
a | b  # union
a & b # intersection
a ^ b # Symmetric Difference
6.Negative round
print("round:"+u"整数:",str(round(1234.5678, -2)))
print("round:"+u"小数:",str(round(1234.5678, 2)))
7.zip转换两个列表为字典
keyL = [1,2,3,4]
valueL = ['a','b','v','x']
for i ,j in zip(keyL, valueL):
print(i,j)

import pprint
pprint.pprint(dict(zip(keyL, valueL)))

dict([(i,j) for i ,j in zip(keyL, valueL)])
8.enumerate索引列表 (不再使用len)
# Preferred way
a = ['s','x','b','d']
for index, item in enumerate(a):
print(index,item)

# Old way
a = ['s','x','b','d']
for i in range(len(a)):
print(i,a[i])
9.矩阵转置
a = [(1,2), (3,4), (5,6)]
b = zip(*a)
for i in b:
print(i)
10.sum的另一用法,二维数组秒变1维
aList = [[1, 2, 3], [4, 5], [6], [7, 8, 9]]
sum(aList, [])
11.map, filter
a = [3,4,5]
[i for i in a if i<4]
list(filter(lambda x: x<4, a))

[i+2 for i in a]
map(lambda x: x+2, a)
list(map(lambda x: x+2, a))
2的1000次方的各位数之和
sum(map(int, str(2**1000)))
12.python打印图形
九九乘法表 (列表解析)
print('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
打印心型
print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
打印曼德勃罗集合

print('\n'.join([''.join(['*'if abs((lambda a:lambda z,c,n:a(a,z,c,n))(lambda s,z,c,n:z if n==0else s(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2 else' 'for x in range(-80,20)])for y in range(-20,20)]))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: