零基础学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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章