日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 中让你相见恨晚的 20 个骚操作

發(fā)布時間:2023/12/19 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 中让你相见恨晚的 20 个骚操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天和大家分享 20 個 Python 編程中新手必會的“騷操作”,使用的頻率超高!記得點贊,收藏哦!話不多說,進入正題!

1.列表推導式

使用列表推導式創(chuàng)建一個列表。

>>>?[n*10?for?n?in?range(5)] [0,?10,?20,?30,?40]

2.交換變量

一行代碼交換兩個變量的值。

>>>?m,?n?=?1,?2 >>>?m,?n?=?n,?m >>>?m 2 >>>?n 1

3.連續(xù)比較

鏈式比較操作符。

>>>?m,?n?=?3,?'c' >>>?1?<?m?<?5 True >>>?'d'?<?n?<?'f' False

4.序列切片

通過切片快速獲取序列片段。

>>>?lst?=?[1,?2,?3,?4,?5] >>>?lst[:3]??#?取前三個數(shù) [1,?2,?3] >>>?lst[::-1]??#?逆序 [5,?4,?3,?2,?1] >>>?lst[::2]??#?步長為2 [1,?3,?5] >>>?lst[::-2]??#?逆序步長為2 [5,?3,?1]

5.切片快速增刪序列

通過切片替換序列片段的值。

>>>?lst?=?[1,?2,?3,?4,?5] >>>?lst[1:3]?=?[] >>>?lst [1,?4,?5] >>>?lst[1:3]?=?['a',?'b',?'c',?'d'] >>>?lst [1,?'a',?'b',?'c',?'d']

6.%timeit 計算運行時間

計算 10000 次列表推導式創(chuàng)建列表所用時間。

%timeit?-n?10000?[n?for?n?in?range(5)]#?2.41?μs?±?511?ns?per?loop?(mean?±?std.?dev.?of?7?runs,?10000?loops?each)

7.三元表達式

獲取 m,n 中較大的值。

>>>?m?=?4 >>>?n?=?2 >>>?if?m?>?n:print('m') else:print('n')m >>>?'m'?if?m?>?n?else?'n' 'm'

還有一種比較少見的寫法。

>>>?m?=?4 >>>?n?=?2 >>>?("n",?"m")[m?>?n] 'm'

格式:(<on_true>, <on_false>)[condition]

8.解包(unpack)

可迭代對象都支持解包。

>>>?a,?b,?*c?=?[1,?2,?3,?4] >>>?a 1 >>>?b 2 >>>?c [3,?4] >>>?print(*range(3)) 0?1?2

9.lambda 匿名函數(shù)

lambda 函數(shù)可以接收任意多個參數(shù) (包括可選參數(shù)) ,返回單個表達式值。 lambda 函數(shù)不能包含命令,只能包含一個表達式。

>>>?def?func(x,?y):return?x?*?y>>>?func(2,?3) 6 >>>?func?=?lambda?x,?y:?x?*?y >>>?func(2,?3) 6

10.map 序列映射

對序列中每一個元素調(diào)用指定函數(shù),返回迭代器。

>>>?def?func(x):return?x?**?2>>>?list(map(func,?[1,2,3])) [1,?4,?9]

使用 lambda 表達式。

>>>?list(map(lambda?x:?x?**?2,?[1,?2,?3])) [1,?4,?9]

11.filter 過濾序列

過濾掉不符合條件的元素,返回迭代器。

>>>?def?func(x):?return?x?%?3?==?0>>>?list(filter(func,?[1,?2?,3])) [3]

使用 lambda 表達式。

>>>?list(filter(lambda?x:?x?%?3?==?0,?[1,?2,?3])) [3]

12.獲取序列組合

獲取兩個序列每個元素兩兩組合的結果。

>>>?list1?=?['a',?'b'] >>>?list2?=?['1',?'2'] >>>?[(m,?n)?for?m?in?list1?for?n?in?list2] [('a',?'1'),?('a',?'2'),?('b',?'1'),?('b',?'2')] >>>?from?itertools?import?product >>>?list(product(list1,?list2)) [('a',?'1'),?('a',?'2'),?('b',?'1'),?('b',?'2')]

13.隨機選取序列元素

隨機選取序列中的一個元素。

>>>?from?random?import?choice >>>?lst?=?[1,?2,?3,?4] >>>?choice(lst) 3

隨機選取序列中的多個元素(可重復)。k 值指定數(shù)量。

>>>?from?random?import?choices >>>?lst?=?[1,?2,?3,?4] >>>?choices(lst,?k=3) [4,?3,?4]

隨機選取序列中的多個元素(不重復)。k 值指定數(shù)量。

>>>?from?random?import?sample >>>?lst?=?[1,?2,?3,?4] >>>?sample(lst,?k=3) [4,?3,?2]

14.序列元素計數(shù)

統(tǒng)計序列每個元素出現(xiàn)的次數(shù)。

>>>?from?collections?import?Counter >>>?s?=?'python+py' >>>?counter?=?Counter(s) >>>?counter Counter({'p':?2,?'y':?2,?'t':?1,?'h':?1,?'o':?1,?'n':?1,?'+':?1})

返回的結果類似字典,可以使用字典的相關方法。

>>>?counter.keys() dict_keys(['p',?'y',?'t',?'h',?'o',?'n',?'+']) >>>?counter.values() dict_values([2,?2,?1,?1,?1,?1,?1]) >>>?counter.items() dict_items([('p',?2),?('y',?2),?('t',?1),?('h',?1),?('o',?1),?('n',?1),?('+',?1)])

統(tǒng)計出現(xiàn)次數(shù)最多的兩個元素。

>>>?counter.most_common(2) [('p',?2),?('y',?2)]

15.字典排序

字典按照鍵(key)降序排序。

>>>?dic?=?{'d':?2,?'c':?1,?'a':?3,?'b':?4} >>>?sort_by_key?=?sorted(dic.items(),?key=lambda?x:?x[0],?reverse=False) >>>?{key:?value?for?key,?value?in?sort_by_key} {'a':?3,?'b':?4,?'c':?1,?'d':?2}

字典按照值(value)降序排序。

>>>?dic?=?{'d':?2,?'c':?1,?'a':?3,?'b':?4} >>>?sort_by_value?=?sorted(dic.items(),?key=lambda?x:?x[1],?reverse=False) >>>?{key:?value?for?key,?value?in?sort_by_value} {'c':?1,?'d':?2,?'a':?3,?'b':?4}

16.字典合并

>>>?dict1?=?{'name':?'靜香',?'age':?18} >>>?dict2?=?{'name':?'靜香',?'sex':?'female'}
  • update() 更新字典。

  • >>>?dict1.update(dict2) >>>?dict1 {'name':?'靜香',?'age':?18,?'sex':?'female'}
  • 字典推導式

  • >>>?{k:?v?for?dic?in?[dict1,?dict2]?for?k,?v?in?dic.items()} {'name':?'靜香',?'age':?18,?'sex':?'female'}
  • 元素拼接

  • >>>?dict(list(dict1.items())?+?list(dict2.items())) {'name':?'靜香',?'age':?18,?'sex':?'female'}
  • chain() 可以將序列連接,返回可迭代對象。

  • from?itertools?import?chain >>>?dict(chain(dict1.items(),?dict2.items())) {'name':?'靜香',?'age':?18,?'sex':?'female'}
  • collections.ChainMap 可以將多個字典或映射,并將它們合并。

  • >>>?from?collections?import?ChainMap >>>?dict(ChainMap(dict2,?dict1)) {'name':?'靜香',?'age':?18,?'sex':?'female'}
  • 在 Python3.5 以上的版本中,可以通過字典解包進行合并。

  • >>>?{**dict1,?**dict2} {'name':?'靜香',?'age':?18,?'sex':?'female'}

    17.zip 打包

    zip() 將序列中對應的元素打包成一個個的元組,然后返回由這些元組組成的迭代器。

    如果序列的元素個數(shù)不一致,則返回列表長度與最短的對象相同。

    >>>?list1?=?[1,?2,?3] >>>?list2?=?[4,?5,?6] >>>?list3?=?['a',?'b',?'c',?'d'] >>>?res?=?zip(list1,?list2) >>>?res <zip?object?at?0x0000013C13F62200> >>>?list(res) [(1,?4),?(2,?5),?(3,?6)] >>>?list(zip(list2,?list3)) [(4,?'a'),?(5,?'b'),?(6,?'c')]

    18.enumerate 遍歷

    enumerate 函數(shù)可以將可迭代對象組合成一個索引序列,這樣遍歷時就可以同時獲取索引與對應的值。

    >>>?lst?=?['a',?'b',?'c'] >>>?for?index,?char?in?enumerate(lst):print(index,?char)0?a 1?b 2?c

    19.any() & all()

    any(iterable)

    • 對于迭代過程中的元素 i,只有所有元素 bool(i) 的結果都為 False,any 的結果才返回 False。

    • 如果迭代是空,返回 False。

    all(iterable)

    • 對于迭代過程中的元素 i,如果存在一個 bool(i) 的結果為 False,則 all 結果返回 False。

    • 如果可迭代對象為空,則返回 True。

    >>>?any('') False >>>?any([]) False >>>?any([1,?0,?'']) True >>>?any([0,?'',?[]]) False >>>?all([]) True >>>?all([1,?0,?'']) False >>>?all([1,?2,?3]) True

    20.用 ** 代替 pow

    求 x 的 y 次方,使用 ** 速度更快。

    %timeit?-n?10000?c?=?pow(2,10) #?911?ns?±?107?ns?per?loop?(mean?±?std.?dev.?of?7?runs,?10000?loops?each) %timeit?-n?10000?c?=?2?**?10 #?131?ns?±?46.8?ns?per?loop?(mean?±?std.?dev.?of?7?runs,?10000?loops?each)

    對比Excel系列圖書累積銷量達15w冊,讓你輕松掌握數(shù)據(jù)分析技能,感興趣的同學可以直接在各大電商平臺搜索書名了解:

    總結

    以上是生活随笔為你收集整理的Python 中让你相见恨晚的 20 个骚操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。