成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我寫的 Python 代碼,同事都說好

開發(fā) 前端
Python 程序員的追求則是 Pythonic,正好在 Python 這門語言中,「隱藏」了特別多方法,可以使代碼變得簡潔,優(yōu)雅,與眾不同。

人生苦短,我用 Python。

程序員的追求就是不寫代碼,早日財務(wù)自由。不對,一不小心把實話說出來了,應(yīng)該是將代碼寫得簡潔,優(yōu)雅。

Python 程序員的追求則是 Pythonic,正好在 Python 這門語言中,「隱藏」了特別多方法,可以使代碼變得簡潔,優(yōu)雅,與眾不同。

我在這里總結(jié)了一些常用操作,特別是關(guān)于列表和字典,分享給大家。

第一個字母大寫

這個方法有點意思,無意中發(fā)現(xiàn)的。

>>> s = "programming is awesome"
>>> print(s.title())
Programming Is Awesome

列表合并

第一種方式:使用 +。

>>> a + b
[1, 2, 3, 4, 5, 6]

第二種方式:使用 extend 關(guān)鍵字。

>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

后兩種方式明顯更加優(yōu)雅,推薦使用。需要說明的一點是,如果列表很大的話,+ 會比較慢,使用 extend 更好。

列表元素去重

使用 set() 對列表元素進行去重。

>>> a = [1, 2, 3, 4, 2, 3]
>>> list(set(a))
[1, 2, 3, 4]

列表排序

使用 sort() 或內(nèi)建函數(shù) sorted() 對列表進行排序。它們之間的區(qū)別有兩點:

  • sort() 方法是對原列表進行操作,而 sorted() 方法會返回一個新列表,不是在原來的基礎(chǔ)上進行操作。
  • sort() 是應(yīng)用在列表上的方法,而 sorted() 可以對所有可迭代的對象進行排序操作。
# sort()
>>> a = [1, 2, 3, 4, 2, 3]
>>> a.sort()
>>> a
[1, 2, 2, 3, 3, 4]
>>>
>>> a = [1, 2, 3, 4, 2, 3]
>>> a.sort(reverse=True)
>>> a
[4, 3, 3, 2, 2, 1]

# sorted()
>>> a = [1, 2, 3, 4, 2, 3]
>>> sorted(a)
[1, 2, 2, 3, 3, 4]
>>> a = [1, 2, 3, 4, 2, 3]
>>> sorted(a, reverse=True)
[4, 3, 3, 2, 2, 1]

遍歷列表的索引和元素對

使用 enumerate() 函數(shù)可以同時輸出索引和元素值。

>>> a = ['python', 'go', 'java']
>>> for i, v in enumerate(a):
... print(i, v)

# output
0 python
1 go
2 java

查找列表中出現(xiàn)最頻繁的元素

使用 max() 函數(shù)可以快速查找出一個列表中出現(xiàn)頻率最高的某個元素。

>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]
>>> b = max(set(a), key=a.count)
>>> b
4

需要說明的一點是,當列表中有兩個元素出現(xiàn)的次數(shù)相同時,會返回第一個出現(xiàn)的元素。

>>> a = [1, 2]
>>> b = max(set(a), key=a.count)
>>> b
1

統(tǒng)計列表中所有元素的出現(xiàn)次數(shù)

前面的代碼給出了出現(xiàn)最頻繁的值。如果想要知道列表中所有元素的出現(xiàn)次數(shù),那么可以使用 collections 模塊。

collections 是 Python 中的一個寶藏模塊,它提供了很多特性。Counter 方法正好可以完美解決這個需求。

>>> from collections import Counter
>>>
>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]
>>> Counter(a)
Counter({4: 4, 2: 2, 3: 2, 1: 1, 5: 1})

將兩個列表合并為字典

使用 zip() 函數(shù),可以將兩個列表合并成字典。

>>> a = ['one', 'tow', 'three']
>>> b = [1, 2, 3]
>>> dict(zip(a, b))
{'one': 1, 'tow': 2, 'three': 3}

求兩個列表的交集,并集和差集。

# list_operate.py

def main():
list_a = [1, 2, 3, 4, 5]
list_b = [4, 5, 6, 7, 8]

# 求交集的兩種方式
res_a = [i for i in list_a if i in list_b]
res_b = list(set(list_a).intersection(set(list_b)))

print(f"res_a is: {res_a}")
print(f"res_b is: {res_b}")

# 求并集
res_c = list(set(list_a).union(set(list_b)))
print(f"res_c is: {res_c}")

# 求差集的兩種方式,在B中但不在A中
res_d = [i for i in list_b if i not in list_a]
res_e = list(set(list_b).difference(set(list_a)))

print(f"res_d is: {res_d}")
print(f"res_e is: {res_e}")


if __name__ == '__main__':
main()

字典創(chuàng)建

# 1、創(chuàng)建空字典
a = {}
b = dict()

# 2、有初始值,從輸入的便利程度來說,我更喜歡第二種
a = {'a': 1, 'b': 2, 'c': 3}
b = dict(a=1, b=2, c=3)

# 3、key 來自一個列表,而 value 相同, 使用 fromkeys,那是相當?shù)膬?yōu)雅
keys = ['a', 'b', 'c']
value = 100
d = dict.fromkeys(keys, value)

# 4、key 來自一個列表,而 value 也是一個列表,使用 zip
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values))

字典合并

m = {'a': 1}
n = {'b': 2, 'c': 3}

# 合并,兩種方式
# 1、使用 update
m.update(n)
# 2、使用 **
{**m, **n}

判斷 key 是否存在

在 Python2 中判斷某個 key 是否存在,可以使用 has_key,但這個方法在 Python3 中已經(jīng)被移除了。

另一種方法是使用 in 關(guān)鍵字,不僅兼容 Python2 和 Python3,速度還更快,強烈推薦。

d = {'a': 1, 'b': 2}
if 'a' in d:
print('hello')

獲取字典中的值

d = {'a': 1, 'b': 2}

# 1、直接用 key 取值,但這種方式不好,如果 key 不存在會報錯,推薦使用 get
a = d['a']

# 2、使用 get,如果 key 不存在還可以賦默認值
a = d.get('a')
c = d.get('c', 3)

字典遍歷

d = {'a': 1, 'b': 2, 'c': 3}

# 遍歷 key
for key in d.keys():
pass

# 遍歷 value
for value in d.values():
pass

# 遍歷 key 和 value
for key, value in d.items():
pass

字典推導(dǎo)式

列表推導(dǎo)式和字典推導(dǎo)式是我相當喜歡的功能,簡潔高效。map 和 filter 我都已經(jīng)快不會用了。

l = [1, 2, 3]
{n: n * n for n in l}
{1: 1, 2: 4, 3: 9}

字典按 key 或 value 排序

d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7}

# 按 key 排序
sorted(d.items(), key=lambda t: t[0])
# 按 key 倒序
sorted(d.items(), key=lambda t: t[0], reverse=True)

# 按 value 排序
sorted(d.items(), key=lambda t: t[1])

還有一個需求是我在開發(fā)過程經(jīng)常碰到的,就是有一個列表,列表的元素是字典,然后按字典的 value 對列表進行排序。

l = [{'name': 'a', 'count': 4}, {'name': 'b', 'count': 1}, {'name': 'd', 'count': 2}, {'name': 'c', 'count': 6}]
sorted(l, key=lambda e: e.__getitem__('count'))
# 倒序
sorted(l, key=lambda e: e.__getitem__('count'), reverse=True)
責任編輯:武曉燕 來源: AlwaysBeta
相關(guān)推薦

2020-03-20 08:00:32

代碼程序員追求

2022-03-15 07:58:31

SQL風險字符串

2024-12-12 12:00:00

代碼C++

2021-04-20 23:44:25

Excel工具Java

2020-09-27 10:55:10

代碼Java字符串

2021-12-03 11:57:27

代碼##語言

2020-05-15 09:30:12

代碼函數(shù)語言

2020-02-20 10:45:57

代碼JS開發(fā)

2024-08-30 09:05:45

2019-08-01 12:56:00

Python代碼記錄

2020-03-02 19:08:21

JVMJDKJRE

2020-10-10 09:09:21

CTOCRUD設(shè)計

2021-07-06 07:21:17

橋接模式組合

2024-12-26 16:47:48

2022-11-03 17:33:40

JavaString 類型

2023-02-03 15:21:52

2020-12-07 08:43:55

代碼軟件開發(fā)

2013-05-02 09:36:44

代碼項目

2024-10-29 09:25:00

2025-01-10 08:41:54

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲第一成年免费网站 | 羞羞视频网站免费看 | 国产精品一区二区久久 | 国产一区二区在线播放 | 九色91视频 | 久国久产久精永久网页 | 国产精品久久久久久亚洲调教 | 国产视频一区二区 | 狠狠艹| 午夜影院在线观看 | 亚洲视频二区 | 国产精品自产av一区二区三区 | 天天干狠狠操 | 人人插人人 | 久久久久久99 | 欧美激情精品久久久久久免费 | 中文字幕电影在线观看 | 午夜精品在线观看 | 亚洲第一免费播放区 | 免费的一级视频 | 中文字幕精品一区二区三区精品 | 日韩中文字幕一区二区 | 日韩精品一区二区三区四区视频 | 欧美精品一区二区三区在线 | 日韩精品一二三区 | 福利视频亚洲 | 黄频免费| 国产精品久久久久久久白浊 | 久久这里只有精品首页 | 亚洲精品乱码久久久久久蜜桃 | 国产www在线 | 欧美精品一区三区 | 天堂久 | 日韩视频在线播放 | 精品一区在线看 | 午夜专区 | 亚洲 欧美 另类 综合 偷拍 | 国产国产精品 | 最新日韩精品 | 欧美成视频 | 国产一区二区三区在线观看免费 |