擅长:python、mysql、java
<p>使用<code>collections.Counter</code>和<code>itertools.groupby</code>:</p>
<pre><code>from collections import Counter
from itertools import groupby
def in_out_flow(lst):
in_flow = Counter(lst)
out_flow = Counter(k for k, _ in groupby(lst))
out_flow[lst[-1]] -= 1
for k,v in in_flow.items():
print('key: {}, in flow: {}, out flow: {}'.format(k, v, out_flow[k]))
</code></pre>
<p>示例:</p>
<pre><code>in_out_flow(['a', 'a', 'a', 'b', 'b', 'a', 'c', 'c', 'b', 'a'])
print('##')
in_out_flow(['a', 'a', 'a', 'b', 'a', 'c', 'a', 'b'])
</code></pre>
<p>输出:</p>
<pre><code>key: a, in flow: 5, out flow: 2
key: b, in flow: 3, out flow: 2
key: c, in flow: 2, out flow: 1
##
key: a, in flow: 5, out flow: 3
key: b, in flow: 2, out flow: 1
key: c, in flow: 1, out flow: 1
</code></pre>