1. 如何拆分包含多種分隔符的字串
例: >>> s='ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
********************str.split 缺點: 每次只能處理一種分隔符, 推薦:只有乙個分隔符進行分割的時候使用***********************
extend
sum, reduce
>>> s.split(';')
['ab', 'cd|efg|hi,jkl|mn\topq', 'rst,uvw\txyz']
>>> [ss.split("|") for ss in s.split(";")]
[['ab'], ['cd', 'efg', 'hi,jkl', 'mn\topq'], ['rst,uvw\txyz']]
>>>
>>>
>>> lambda ss:ss.split("|"),s.split(";")
(at 0x000002db4aa11ca8>, ['ab', 'cd|efg|hi,jkl|mn\topq', 'rst,uvw\txyz'])
>>>
>>> map(lambda ss:ss.split("|"),s.split(";"))
>>> list(map(lambda ss:ss.split("|"),s.split(";")))
[['ab'], ['cd', 'efg', 'hi,jkl', 'mn\topq'], ['rst,uvw\txyz']]
>>>
>>> t=
>>> list(map(t.extend,ss.split("|") for ss in s.split(";")))
syntaxerror: invalid character in identifier
>>> list(map(t.extend,[ss.split("|") for ss in s.split(";")]))
[none, none, none]
>>> t
['ab', 'cd', 'efg', 'hi,jkl', 'mn\topq', 'rst,uvw\txyz']
s='ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
函式:def my_split(s,seps):
res=[s]
for sep in seps:
t=list(map(lambda ss:t.extend(ss.split(sep)),res))
res = t
return res
print (my_split(s,",;|\t"))
s='ab;cd|efg|hi,jklmn\topq;rst,uvw\txyz'
k =sum([ss.split("|") for ss in s.split(";")])
print (k)
>>>['ab', 'cd', 'efg', 'hi,jkl', 'mn\topq', 'rst,uvw\txyz']
from functools import reduce
my_split
= lambda s, seqs: reduce(lambda l,sep:sum(map(lambda ss:ss.split(sep),l), ), seqs, [s])
print (kk)
python 直接將list 整體轉化-----------map():
>>> results =['1','2','3'] 轉化為下面這個樣子[1,2,3]
python2
>>>map(int,results)
python3:
>>>list(map(int,results))
[1, 2, 3]
********************************正規表示式:re.split****************************
推薦: 多個分隔符的時候用,只有乙個分割符的話,考慮到效能,建議使用str.split,
>>>import re
>>>print (re.split("[;,|\t]+",s))
>>>['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']
2. 如何在列表,字典,集合中根據條件篩選資料
例:
基礎方法
推薦使用
list:
隨機生成乙個list:
from ramdom import ramdint
[randint(-50, 50) for _ in range(10)]
#[-50, -10, 40, 19, 38, 42, 4, 17, -34, -37]
例:res =
for l in test_list:
if l>=0:
print (res)
列表解析和filter函式:
print ([x for x in test_list if x>=0])
filter(lambda x:x>0,test_list)
注意在python3中:filter返回的是乙個生成器物件,在python2裡面可以直接返回乙個列表
要直接獲取最後的list結果的話,需要:
list(filter(lambda x:x>0,test_list))
字典:隨機生成乙個字典:
#字典解析:
filter:
dict(filter(lambda item:item[1]>=90, g.items()))
集合:集合解析:
3. 如何給元組裡面的元素命名,提高程式的可讀性
python3介面程式設計 Python3程式設計技巧
in 1 fromrandom import randint in 2 data randint 10,10 for in range 10 in 3 data out 3 3,4,3,4,7,2,4,1,7,9 過濾列表中的負數 in 9 list filter lambda x x 0,data...
python3的使用技巧
字典合併 d1 d2 d3 d1.updatr d2 d1.updatr d3 python3.5以上 生成新的字典 d1 d2 d3 也可以快速的生成字典 字典訪問 d d name d.get name 訪問name對應的value c d.get nam unknow 當訪問不存在的key,會...
Python3 語法小技巧
python現在應用領域越來越廣泛,在寫的同時,養成良好習慣記錄是非常有意義的,大家都知道python入門容易精通很難,今天分享一下有意思的 0x01 想必我們經常有用到過陣列,但這樣的資料結構一定涉及到排序,取最大值,取最小值,下面就是乙個小栗子 import heapq nums 10,22,4...