柱状图python_python柱状图一行
編寫計(jì)算柱狀圖的python程序有很多種方法。
通過柱狀圖,我指的是一個(gè)計(jì)算對象在
iterable
并在字典中輸出計(jì)數(shù)。例如:
>>> L = 'abracadabra'
>>> histogram(L)
{'a': 5, 'b': 2, 'c': 1, 'd': 1, 'r': 2}
編寫此函數(shù)的一種方法是:
def histogram(L):
d = {}
for x in L:
if x in d:
d[x] += 1
else:
d[x] = 1
return d
寫這個(gè)函數(shù)有更簡潔的方法嗎?
如果我們有關(guān)于python的字典理解,我們可以寫:
>>> { x: L.count(x) for x in set(L) }
但是由于python 2.6沒有它們,我們必須寫:
>>> dict([(x, L.count(x)) for x in set(L)])
雖然這種方法可能是可讀的,但它是不有效的:l被遍歷多次。此外,對于單壽命生成器,這不起作用;對于迭代器生成器,該函數(shù)應(yīng)該同樣有效,例如:
def gen(L):
for x in L:
yield x
我們可以嘗試使用
reduce
功能(R.I.P.):
>>> reduce(lambda d,x: dict(d, x=d.get(x,0)+1), L, {}) # wrong!
哎呀,這不管用:密鑰名是
'x'
不是
x
. :(
我的結(jié)局是:
>>> reduce(lambda d,x: dict(d.items() + [(x, d.get(x, 0)+1)]), L, {})
(在python 3中,我們必須
list(d.items())
而不是
d.items()
但這是假設(shè),因?yàn)闆]有
減少
在那里)
請用更好、更易讀的一行字打敗我!;)
總結(jié)
以上是生活随笔為你收集整理的柱状图python_python柱状图一行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DIY自己装机必备,凯侠RC10硬盘,让
- 下一篇: 就能和电脑互传文件如何电脑互传文件