1樓:譚菜根
題主舉例 c = [b, a][a > b] 主要是實現三元運算子,取 a、b 中較大的那個,還有一種寫法是 c = a > b and a or b。其實兩種方法都不太直觀,還是老辦法簡單易懂:c = a if a > b else b。
2樓:朱小霖
這兩天工作的時候遇到了乙個,大致用法是這樣:
names=[
"tom"
,"jerry"
]for
name
innames:if
check(x
):do(x
)break
else
("no qualified name"
)就是在迴圈後面可以直接加else,如果迴圈break了,就不會執行else。
3樓:facert
functools.partial 偏函式
import socket
import functools
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn = s.connect(('localhost', 80))
msgs =
# 普通寫法
while True:
msg = coon.recv(1024)
elsebreak
# iter and functools.partial 的寫法
for msg in iter(functools.partial(conn.recv, 1024), b''):
2. 閉包(Closure)
def create_fun(num):
def fun_bound(f, *argsreturn fun(f, *args, key=num)
return fun_bound
temp = create_fun(10)
c = temp(ff, 1)
print c
4樓:Softmax
合併兩個dictionary, 並且合併重複元素。
a=b=
print dict(a,**b)
把巢狀的list攤平(僅限兩層)
a=[[1,2],[3,4]]
print sum(a,)
[1, 2, 3, 4]
5樓:
import pprint
message = 'It was a bright cold day in April,and the clocks were string thirteen.'
count = {}
for character in message:
count.setdefault(character,0)count[character] = count[character] + 1
pprint.pprint(count)
列印的效果如下: (pprint 不知道算不算語法糖,剛從乙個電子書的看到的)
6樓:岳飛
composable function
In math, (f * g) (x) = f(g(x)). This is called function composition.
# this transfer a map object to list
lmap = compose(list, map)
# lmap equivalent to `list(map(...))`
lmap(lambda x: x ** 2, range(10))
Let's try some math.
f(x) = x^2 + 1
g(x) = 2x - 1
h(x) = -2x^3 + 3
We want to represent f * g * h in a program, i.e. fn(x) = f(g(h(x)))
f = lambda x: x**2 + 1
g = lambda x: 2*x - 1
h = lambda x: -2 * x**3 + 3
fn = compose(f, g, h)
fn(5) # 245026
7樓:劉奕聰
用 frozenset 來定義常量。
frozenset 是一種很少用的內建的資料型別,用來構造乙個不可變的集合。
假設我們有以下函式用來宣告乙個配置項:
declare
(option
,default
)此函式有如下行為:
如果指定了 default,配置檔案中沒有配置的 option 預設為 default;
如果沒有指定 default,則將 option 視為必填項,需要在配置檔案中明確指定;
現在我們來思考沒有指定 default 到底是什麼意思。
是declare(option, None)?
顯然不是,對於很多配置項,None 往往是個有意義的值。
或者是省略 default 的值:declare(option)?
這種方式一般有兩種實現:
判斷是否有第二個引數(即 args 是否是空):def declare(option, *args);
給 default 設定個沒有意義的預設值;
第一種處理起來很繁瑣,還要處理命名引數,而且後期難以增加引數。
第二種會優雅一些,但是我們需要考慮什麼樣的預設值才是沒有意義的值。
所以我們可以這樣用 frozenset:
undefined
=frozenset
()宣告了乙個 undefined 常量後作為 default 的預設值:
defdeclare
(option
,default
=undefined
):pass
frozenset 沒有快取,除了引用再也沒有其他方式再構造出乙個同樣的物件,換句話說,對於配置檔案來說,這個 undefined 是乙個約束項。
還有個額外的好處是我們能夠控制 frozenset 對應的布林值:
nan=
frozenset
()bool
(nan
)# False
bool
(float
("nan"
))# True
foo=
frozenset
(["foo"
])bool
(foo
)# True
frozenset 不需要引入包,在 Python2 和 Python3 都能直接使用。
8樓:
for else語法
for裡面如果沒有觸發break,就執行else部分,否則,就略過else部分。
這個語法糖省去了定義變數flag。想想如果用cpp怎麼寫吧。
9樓:karajan1001
我來說乙個迴圈中的。
python中的最常見的for迴圈是沒有下標的。
a_list=[
'a',
'b',
'c',
'd']
form
ina_list
:print(m
)abc
d如果要在迴圈中引用list中的其他元素會比較麻煩。
乙個可行的方法是使用enumerate返回list的元素和list的標號,然後通過呼叫類似a_list[num + 1]的方法引用其他元素。
a_list=[
'a',
'b',
'c',
'd']
fornum,m
inenumerate
(a_list
(num,m
)0 a
1 b2 c
3 d用上述方法需要注意考慮邊界條件。直接通過編號呼叫list的元素不是乙個很優雅的事情。
所以我一般採用另乙個的解決方案,使用zip將序列和自身位移後的序列打包。
a_list=[
'a',
'b',
'c',
'd']
new_list
=zip
(a_list
,a_list[1
:])form,
next_m
innew_list
:print(m
,next_m
)a b
b cc d
10樓:馭風者
根據網上的教程總結了一篇文章,裡面有不少例子,可以看看https://
zhuanlan /p/25
892022
11樓:BrieflyX
個人覺得題主這種寫法不好,還不如c = max(a, b)這種來得簡潔明瞭。
用的最多的當然是生成器推導式,列表推導式,字典推導式。基本上基於序列的操作都可以囊括在內了。
12樓:杜洛瓦
from
collections
import
Countera=
[1,1
,1,1
,1,2
,3,3
,3,4
,4,4
,4,5
,6,6
,6,7
,8]a_count
=Counter(a
(a_count
)# output
# Counter()
names=[
'alice'
,'bob'
,'bob'
,'candice'
,'candice'
]names_count
=Counter
(names
(names_count
)# output
# Counter()
非常實用的計數功能,畫histogram 必備,誰用誰知道。
13樓:火鍋大魔王
def a(lst):
If len(lst) != 0:
return lst
else:
return "error lst"
def b(lst):
return lst or "error lst"
14樓:靈劍
Python3.6抄襲PHP的乙個語法
f'SELECT * FROM mytable WHERE name="" and age > '
我已經看到大量XSS和SQL注入漏洞被寫出來的未來了
15樓:
把點座標拆成兩個list,matpotlib有的時候畫圖很有用
例如(x1,y1),(x2,y2),...變成(x1,x2,x3....)和(y1,y2,y3,...)
x,y=zip(*original_list)
自然語言中有哪些有趣的「語法糖」?
configex if 山東方言裡的 倒裝句 實質上允許了語言元素的亂序動態載入。例如 你吃飯了嗎晚上 如果句子開頭的詞句一時想不起來,不必卡殼 阻塞 可以先說後邊的,再說前邊的。這樣可以減少阻塞時間,提高資訊傳遞效率。用程式語言模擬的話,允許語句順序變換但語義不受影響,大概類似於允許先呼叫後宣告?...
《Django的語法糖》譯自《Tango with Django》(第一章)
小技術 1 鐵路線路的起撥改是鐵道工務系統最常見的養護工作。我們知道,軌道的方向和水平對機車及車輛的安全執行意義重大,所以高鐵 客專常常使用混凝土整體道床和75鋼軌。2 看方向 水平的技巧和 公子恒恒說的差不多,不過看水平的要把臉貼在軌面上,這樣視線和櫃面基本處於同乙個水平線上,可以更好的看到小坑 ...
有哪些好玩的句子?
北街貓小七 腔的熱血步入這個社會,摸爬滾打身心疲憊 當你發現收入太低買啥都貴,千萬不要因此而變的頹廢 要相信你有用的本事不回作廢,加油 現在開始起飛 心不由己 這個時代的青年,能夠把自己安排對了的很少。越聰明的人,越容易有慾望,越不知應在哪個地方擱下那個心。心實在應該擱在當下的。可是聰明的人,老是擱...