python使用建議與技巧分享(一)

2022-09-26 12:24:30 字數 1831 閱讀 1665

這是乙個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。

1 如何建立指定長度且有特定值的list

不推薦方式

list1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

print list1

# [0, 0, 0, 0, 0, 0,程式設計客棧 0, 0, 0, 0]

推薦方式

list1 = [0] * 10

print list1

# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

其實,前一種方式一看就不符合dry(don't repeat yourself)原則,稍微想想就知道還有更優雅的做法。如果是元組呢?只需要將[0]改成(0,)即可,千萬不要忘記0後面的逗號。另外,這裡不止支援數字,其實可以是任意物件組成的list或者tuple。例如:

class user(object):

pass

user_list = [user()] * 10

2 如何連線字串

不推薦方式

def plus_str():

str_list = ['1'] * 10000

long_str = ''

for str in str_list:

long_str = long_str + str

return long_str

推薦方式

def join_str():

str_list = ['1'] * 10000

return ''.join(str_list)

使用加號方式連線字串,效率底下,因為會頻繁的拷貝字串和分配記憶體,比較耗時。但是使用join方式連線字串,只需要分配一次記憶體,並將所有待連線的字串拷貝到記憶體空間,效率更高。在我的電腦上,測試2個函式的耗時,當執行10000次時,前者耗時是後者約24倍,**如下:

print timeit(stmt="plus_str()",

setup="from __main__ import plus_str",

number=10000)

// 輸出:42.7354210396

print timeit(stmt="join_str()",

setup="from __main__ import join_str",

number=10000)

// 輸出: 1.78316799643

3 如何合併字典

不推薦方式

dict1 =

dict2 =

dict1.update(dict2)

merged_dict = dict1

print merged_dict

# 推薦方式

程式設計客棧dict1 =

dict2 =

merged_dict = d **dict2)

print merged_dict

# 前一種方式會將源字典dict1修改,有一定的***,如果不在乎源字典被修改,前一種方式更簡潔一些。後一程式設計客棧種方式不會修改源字典,沒有***。如果有重複的key值,按從右到左的順序覆蓋,例如:

dict1 =

dict2 =

merged_dict = dict(dict1, **dict2)

print merged_dict

# 使用右邊引數dict2的key值覆蓋dict1的key值。通過內建函式dict,將2個字典作為引數傳遞給該函式,建立乙個新字典。需要特別指出的是,第二個引數dict2需要加上2個星號,這裡表示該引數是乙個具名引數,並且型別是字典。因為dict函式建立字典時,可以接受多個引數,這是python函式支援可變引數的規定格式。

python 使用建議與技巧分享(四)

這是 乙個 系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。1 如何列印更易讀的類 不推薦方式 class point object def init self,x,y self.x x self.y y p point 3,4 print p main point ...

python使用建議與技巧分享(二)

這是乙個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。1 如何在if語句中檢測多個條件 不推薦方式 flag1 1 flag2 0 flag3 0 if flag1 1 or flag2 1 or flag3 1 print ok 推薦方式 flag1 1 flag...

python技巧分享(十一)

這是乙個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。my iter iter my list for e in my iter print e,next my iter 1 banana 2 grape 3 pear 借助iter函式,傳入list生成乙個迭代器,...