零基础学Python--你应知道的30个小技巧
关于Python,可能有很多的初学者还没有什么概念!但是Python确实是一个非常容易学习的胶水语言,为了增加大家学习的乐趣,我们先来看看Python的一些小技巧。
一、交换两个变量的值。
在Python里面交换变量的值,不需要像C语言一下用异或操作,并且只需要一行就搞定了。
a, b = 1, 2
a, b = b, a
二、多个变量赋值。
在Python对多个变量进行赋值是非常方便的,可以在一行内进行各种形式的赋值。
a, b, c = 1, 2, 3
a, b, c = [1, 2, 3]
a, b, c = (2 * i + 1 for i in range(3))
a, (b, c), d = [1, (2, 3), 4]
三、扩展赋值。
可以说Python的技巧是非常的令人愉悦的,比如说,如下这种赋值方式。大家可以猜测一下结果是什么,然后实际去运行一下。
a, *b, c = [1, 2, 3, 4, 5]
四、列表中负的下标索引方式。
这种方式给我们的编程真的是给了诸多便利,和C语言的负的下标不一样,Python将列表的首尾连接起来了,而C语言的负数下标则是按照内存的地址的偏移。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[-1]的值则为10,a[-2]的值则为9。
五、列表切片。
列表切片功能很多同学应该用的比较多了,确实是一项非常使用的功能。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[2:8]的值为[2,3,4,5,6,7]。
六、使用负的下标索引来切片。
既然列表可以使用负的索引,那么肯定也可以使用负的索引来进行切片。比如:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
其中a[-4:-2]的值为[7,8]。
七、列表切片时使用步长。
使用步长可以让Python对列表进行切片时跳过其中指定步长的值。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[::2]的结果为[0, 2, 4, 6, 8, 10],而a[2:8:2]的结果为[2, 4, 6]。
八、列表切片时使用负的切片。
同样的我们在对列表切片时,可以使用负的步长。比如:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
其中a[::-1]的值为[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0],而a[::-2]的值为[10, 8, 6, 4, 2, 0]。
九、对列表切片进行修改。
列表切片赋值可以很方便的去修改列表中的某一部分值。
a = [1, 2, 3, 4, 5]
a[2:4] = [0, 0]则a = [1, 2, 0, 0, 5],a[1:1] = [8, 9]则a = [1, 8, 9, 2, 3, 4, 5],a[1:-1] = []则a = [1, 5]。
十、对切片进行命名。
这类似于C语言里面定义了一个宏,我们可以去取个名字方便我们实际使用的时候使用。
a = [0, 1, 2, 3, 4, 5]
LASTTHREE = slice(-3, None,None)
我们调用a[LASTTHREE]就可以达到slice同样的效果,其结果为[3, 4, 5]。
十一、枚举列表中的索引和值。
a = ['Hello', 'world', '!']
for i, x in enumerate(a): print '{}: {}'.format(i, x)
其运行结果为:
0: Hello
1: world
2: !
十二、枚举字典中的key和value。
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for k, v in m.items(): print '{}: {}'.format(k, v)
其运行结果为:
a: 1
c: 3
b: 2
d: 4
十三、拆分和重组列表。
a = [1, 2, 3]
b = ['a', 'b', 'c']
z = zip(a, b)的结果则为z[(1, 'a'), (2, 'b'), (3, 'c')],如果再对z进行zip(*z),我们发现结果为[(1, 2, 3), ('a', 'b', 'c')]。
十四、对列表进行分组。
a = [1, 2, 3, 4, 5, 6]
group_adjacent = lambda a, k: zip(*([iter(a)] * k))
我们使用group_adjacent(a, 3)的结果为[(1, 2, 3), (4, 5, 6)],使用group_adjacent(a, 2)的结果为[(1, 2), (3, 4), (5, 6)]。
十五、交换字典的key和value。
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict(zip(m.values(), m.keys()))
其结果为:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
十六、对列表进行降维。
a = [[1, 2], [3, 4], [5, 6]]
list(itertools.chain.from_iterable(a))
其结果为:[1, 2, 3, 4, 5, 6]。
十七、构造一个生成器。
g = (x ** 2 for x in xrange(10))
next(g)的运行结果为0,而如果我们再一次运行next(g),则结果为1,如果继续运行一次,则结果为4。
十八、构造一个字典。
m = {x: x ** 2 for x in range(5)}
其运行结果为:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}。
十九、用字典的方式来交换字典的key和value。
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
{v: k for k, v in m.items()}
其结果为:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}。
二十、为元组进行命名。
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(x=1.0, y=2.0)
那么p.x的值为1.0而p.y的值为2.0。
二十一、给字典排序。
m = dict((str(x), x) for x in range(10))
我们可以看到其值为:1, 0, 3, 2, 5, 4, 7, 6, 9, 8,它的顺序是乱序的。如果我们使用如下的:
m = collections.OrderedDict((str(x), x) for x in range(10))
那么值为:0, 1, 2, 3, 4, 5, 6, 7, 8, 9,现在它是一个有秩序的字典了。
二十二、合并两个字典。
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z = {**x, **y}
其结果为{'c': 4, 'a': 1, 'b': 3}
二十三、使用lambda来便捷创建函数。
add = lambda x, y: x + y
add(5, 3)
二十四、反转一个字符串。
a = "abcdefgh"
print "Reverse is",a[::-1]
其结果为:hgfedcba。
二十五、矩阵转置。
mat = [[1, 2, 3], [4, 5, 6]]
zip(*mat)
其结果为: [(1, 4), (2, 5), (3, 6)]。
二十六、字符串连接。
a = ['my', 'life', 'is', 'pure']
' '.join(a)
其结果为:my life is pure。
二十七、字符串重复生成。
a = 'python'*5
其结果为:pythonpythonpythonpythonpython
二十八、字符串转为数组。
a ="my life is brilliant"
result = map(lambda x:int(x) ,raw_input().split())
其结果为['my', 'life', 'is', 'brilliant']。
二十九、多个条件不等式。
n = 10
result = 1 < n < 20
其结果为:True。这是我们C程序员梦寐以求的写法吧!
三十、找到列表里出现频率最高的值。
test = [1,2,3,4,2,2,3,1,4,4,4]
print(max(set(test), key=test.count))
这些小技巧可以看到Python的强大确实是可见一斑,当然Python的魅力不仅仅如此。当你进入Python的世界之后,你会发现它不同于其他语言,甚至对于完全没有基础的人,Python也非常的容易上手,并且极大的成为你的工作的扩展。可以说各行各业的人都可以使用Python来帮助自己获得更强的掌控力。
人工智能与深度学习做量化请关注:AI量化(https://t.zsxq.com/RvfY37y) 星球限时免费,如需加入,请私信我获得免费邀请码!
零基础学习Python与深度学习应用请关注星球:Python与深度学习 https://t.zsxq.com/bUFayZ3
微信公众号:QTechAI