這是乙個系列文章,主要分享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生成乙個迭代器,...