<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 中讓你相見恨晚的 20 個(gè)騷操作

          共 4927字,需瀏覽 10分鐘

           ·

          2021-12-22 15:55

          ??????關(guān)注我,和老表一起學(xué)Python、云服務(wù)器

          大家好,我是老表~
          今天和大家分享 20 個(gè) Python 編程中新手必會(huì)的“騷操作”,使用的頻率超高!記得點(diǎn)贊,收藏哦!話不多說,進(jìn)入正題!

          1.列表推導(dǎo)式

          使用列表推導(dǎo)式創(chuàng)建一個(gè)列表。

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

          2.交換變量

          一行代碼交換兩個(gè)變量的值。

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

          3.連續(xù)比較

          鏈?zhǔn)奖容^操作符。

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

          4.序列切片

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

          >>>?lst?=?[1,?2,?3,?4,?5]
          >>>?lst[:3]??#?取前三個(gè)數(shù)
          [1,?2,?3]
          >>>?lst[::-1]??#?逆序
          [5,?4,?3,?2,?1]
          >>>?lst[::2]??#?步長(zhǎng)為2
          [1,?3,?5]
          >>>?lst[::-2]??#?逆序步長(zhǎng)為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 計(jì)算運(yùn)行時(shí)間

          計(jì)算 10000 次列表推導(dǎo)式創(chuàng)建列表所用時(shí)間。

          %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.三元表達(dá)式

          獲取 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'

          格式:(, )[condition]

          8.解包(unpack)

          可迭代對(duì)象都支持解包。

          >>>?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ù)可以接收任意多個(gè)參數(shù) (包括可選參數(shù)) ,返回單個(gè)表達(dá)式值。 lambda 函數(shù)不能包含命令,只能包含一個(gè)表達(dá)式。

          >>>?def?func(x,?y):
          ?return?x?*?y

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

          10.map 序列映射

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

          >>>?def?func(x):
          ???????return?x?**?2

          >>>?list(map(func,?[1,2,3]))
          [1,?4,?9]

          使用 lambda 表達(dá)式。

          >>>?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 表達(dá)式。

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

          12.獲取序列組合

          獲取兩個(gè)序列每個(gè)元素兩兩組合的結(jié)果。

          >>>?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.隨機(jī)選取序列元素

          隨機(jī)選取序列中的一個(gè)元素。

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

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

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

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

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

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

          統(tǒng)計(jì)序列每個(gè)元素出現(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})

          返回的結(jié)果類似字典,可以使用字典的相關(guān)方法。

          >>>?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)計(jì)出現(xiàn)次數(shù)最多的兩個(gè)元素。

          >>>?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'}
          1. update() 更新字典。
          >>>?dict1.update(dict2)
          >>>?dict1
          {'name':?'靜香',?'age':?18,?'sex':?'female'}
          1. 字典推導(dǎo)式
          >>>?{k:?v?for?dic?in?[dict1,?dict2]?for?k,?v?in?dic.items()}
          {'name':?'靜香',?'age':?18,?'sex':?'female'}
          1. 元素拼接
          >>>?dict(list(dict1.items())?+?list(dict2.items()))
          {'name':?'靜香',?'age':?18,?'sex':?'female'}
          1. chain() 可以將序列連接,返回可迭代對(duì)象。
          from?itertools?import?chain
          >>>?dict(chain(dict1.items(),?dict2.items()))
          {'name':?'靜香',?'age':?18,?'sex':?'female'}
          1. collections.ChainMap 可以將多個(gè)字典或映射,并將它們合并。
          >>>?from?collections?import?ChainMap
          >>>?dict(ChainMap(dict2,?dict1))
          {'name':?'靜香',?'age':?18,?'sex':?'female'}
          1. Python3.5 以上的版本中,可以通過字典解包進(jìn)行合并。
          >>>?{**dict1,?**dict2}
          {'name':?'靜香',?'age':?18,?'sex':?'female'}

          17.zip 打包

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

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

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

          18.enumerate 遍歷

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

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

          ?
          0?a
          1?b
          2?c

          19.any() & all()

          any(iterable)

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

          all(iterable)

          • 對(duì)于迭代過程中的元素 i,如果存在一個(gè) bool(i) 的結(jié)果為 False,則 all 結(jié)果返回 False。
          • 如果可迭代對(duì)象為空,則返回 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)

          這就是今天要分享的內(nèi)容,記得點(diǎn)贊哦~提前感謝?

          何找到我:

          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  超哥约草大二91国产最新 | 午夜激情福利 | 翔田千里全部A片 | 久久久精品无码电影 | 国产精品一区二区人成电影网 |