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

歡迎訪問 生活随笔!

生活随笔

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

python

np合并 python_这15个tips,带你领略 Python 的简洁和优雅

發布時間:2023/12/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 np合并 python_这15个tips,带你领略 Python 的简洁和优雅 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文通過15個具體的例子,帶你領略 Python 的簡潔和優雅。

下文中'P'即表示'Pythonic',很 Python 的寫法,'NP'也就是相反,不是很'Pythonic'的寫法。

1、為多個變量賦值

### NP:

a = 2

b = 5

c = 12

### P:

a,b,c = 2,5,12

2、變量值互換

a = 50

b = 25

### NP:

temp = a

a = b

b = temp

### P:

a,b = b,a

上面的例子通過了元組的pack和unpack完成了對a,b的互換,避免了使用臨時變量temp,而且只用了一行代碼。

3、鏈式比較

a = 50

b = 25

### NP:

0<= b and b<=a and a<100

### P:

0 <= b <= a < 100

后者的寫法更接近數學表達式。

4、any/all函數

any和 all是 Python的內置函數。對于 any函數,可迭代參數的任何一個元素為真就返回 True,否則返回 False。對于 all函數,如果可迭代參數的所有元素為真(或迭代器為空),返回 True,否則返回 False。

### NP:

xyz = [4641951.185 ? 1393053.923 ? 4133281.067]

for v in xyz:

? ?if 0.0==v:

? ? ? ?return False

return True

### P:

return all(xyz)

5、用in代替or簡化判斷

同樣是多重判斷問題,判斷某個變量是否為多個可能取值之一

### NP:

if 'green'==s0 or 'red'==s0 or 'blue'==s0:

? ?return True

else:

? ?return False

### P:

return s0 in ('green', 'red', 'blue')

6、if/else 三目運算

### NP:

if age > 18:

? ?ss = 'adult'

else:

? ?ss = 'child'

### P:

ss = 'adult' if age > 18 else 'child'

后者的寫法簡單易懂,僅需一行代碼就完成了常規寫法4行代碼的功能。

7、字符串列表的連接

lst_str = ["Python", "is", "a", "good", "language"] ?

### NP1:

ss = ''

for s0 in lst_str:

? ?ss += s0 + ' '

### NP2:

ss = '%s %s %s %s %s'%(lst_str[0], lst_str[1], lst_str[2], lst_str[3], lst_str[4])

### P:

ss = ' '.join(lst_str)

使用 join方法可以指定間隔字符(串)將字符串列表合并成一個字符串。

8、匹配字符串開頭/結尾

fname1 = 'python.jpg'

fname2 = 'folwer.bmp'

fname3 = 'readme.txt'

### P:

fname1.startswith('python') ? ? ? ? ? #True

fname2.endswith('.jpg') ? ? ? ? ? ? ? ?#False

fname2.endswith(('.jpg', '.bmp')) ? ? #True

fname3.endswith(('.jpg', '.bmp')) ? ? ?#False

9、列表推導式

從列表中找出符合條件的元素組成新的列表

lst0 = [11, 22, 24, 87, 70]

### NP:

lst1 = []

for v in lst0:

? ?if v>30:

? ? ? ?lst1.append(v)

### P:

lst1 = [ v for v in lst0 if v>30 ]

可以結合上面兩條tips,可以實現快速找出文件夾下指定類型的文件,例如:

picfiles = [nm for nm in os.listdir(mydir) if nm.endswith( ('.jpg', '.bmp', '.tiff', '.gif', '.png') ) ]

10、使用zip同步處理多個列表

當想要對多個列表對應的元素進行操作時

income = [201, 198, 195, 210, 199]

cost_rent = [80, 83, 77, 81, 80]

cost_food = [47, 64, 53, 51, 79]

balance = []

### NP:

nlen = len(income)

for i in range(nlen):

? ?balance.append(income[i] - cost_rent[i] - cost_food[i])

### P:

for i0, cr, cf in zip(income, cost_rent, cost_food):

? ?balance.append(i0 - cr - cf)

zip(a,b) 會生成一個可返回元組 (x,y) 的迭代器,其中x來自a,y來自b。一旦其中某個序列到底結尾,迭代宣告結束。因此迭代長度跟參數中最短序列長度一致。

11、列表去重

### NP:

lst_new = []

for v in lst_old:

? ?if not v in lst_new:

? ? ? ?lst_new.append(v)

### P:

lst_new = list(set(lst_old))

12、文件打開與關閉/上下文管理

### NP:

fp = open('result.txt', 'w')

try:

? ?fp.write('just for fun!')

except IOError:

? ?print('something error')

finally:

? ?fp.close()

### P:

with open('result.txt', 'w') as fp:

? ?fp.write('just for fun!')

with 關鍵字實現了上下文管理器,是一種更簡潔也更安全的操作方法。上例中當離開 with 代碼塊的時候,系統會自動調用 fp.close() 方法關閉文件, 哪怕中間遇到異常,close 方法也會被調用。

13、Enumerate

枚舉函數,用于枚舉可迭代對象,并且同時返回元素的下標索引值。

如果你想在迭代一個序列的同時,得到被處理元素的索引下標。內置的 enumerate() 函數可以很好的解決這個問題:

array = ['Stone', 'Tom', 'Jobs', 'Jack']

### NP:

narr = len(array)

for i in range(narr):

? ?print (i, array[i])

### P:

for i, a0 in enumerate(array):

? ?print (i, a0)

#0 Stone

#1 Tom

#2 Jobs

#3 Jack

14、對齊字符串

有時,你想通過某種對齊方式來格式化字符串,輸出一些提示信息

ss = 'Summary'

### NP:

print ('%s%s%s', '-'*20, ss, '-'*20)

### P:

print (ss.center(50,'-'))

#--------------------Summary--------------------

類似地,想讓字符串左對齊或者右對齊,可以用 .ljust(50, '-') 或 rjust(50, '-')

15、解包

解壓列表/元祖的元素,賦值給不同的變量

lst = ['jack', 18, 'Python', 'Good']

### NP:

name = lst[0]

age = lst[1]

lang = lst[2]

score = lst[3]

### P:

name, age, lang, score = lst

如果想解包一個長列表,只得到其中部分元素,例如第一個和最后一個元素:

### P:

head, *mid, tail = lst

該例子中,除了頭、尾元素之外,中間不受關注的元素作為一個子列表全部賦值給了 mid 。

-END-

長按識別關注 | GitPython

總結

以上是生活随笔為你收集整理的np合并 python_这15个tips,带你领略 Python 的简洁和优雅的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。