零基礎學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

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