List/Dict comprehension

List/Dict comprehension is a simple way to create lists and dicts with a bunch of values that we need. For really take advantage of this operator we must combine it with lambda operator, but first ,we will see simple examples.

<span>[</span><span>x</span> <span>*</span> <span>2</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>)]</span>
<span># output: [0, 2, 4] </span>
<span>{</span><span>chr</span><span>(</span><span>65</span><span>+</span><span>x</span><span>)</span> <span>:</span> <span>x</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>)}</span>
<span># output: {'A': 0, 'C': 2, 'B': 1} </span>
<span>[</span><span>x</span> <span>*</span> <span>2</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>)]</span>
<span># output: [0, 2, 4] </span>
<span>{</span><span>chr</span><span>(</span><span>65</span><span>+</span><span>x</span><span>)</span> <span>:</span> <span>x</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>)}</span>
<span># output: {'A': 0, 'C': 2, 'B': 1} </span>
[x * 2 for x in range(3)] # output: [0, 2, 4] {chr(65+x) : x for x in range(3)} # output: {'A': 0, 'C': 2, 'B': 1}

Enter fullscreen mode Exit fullscreen mode

Now we will combine both operators:

<span>serie</span> <span>=</span> <span>[</span><span>x</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>20</span><span>)]</span>
<span>f</span> <span>=</span> <span>lambda</span> <span>x</span><span>:</span> <span>chr</span><span>(</span><span>x</span> <span>+</span> <span>66</span><span>)</span> <span>if</span> <span>x</span> <span>%</span> <span>2</span> <span>==</span> <span>0</span> <span>else</span> <span>chr</span><span>(</span><span>x</span> <span>+</span> <span>65</span><span>)</span>
<span>[</span><span>f</span><span>(</span><span>x</span><span>)</span> <span>for</span> <span>x</span> <span>in</span> <span>serie</span><span>]</span>
<span># output: ['B', 'B', 'D', 'D', 'F', 'F', 'H', 'H', 'J', 'J', 'L', 'L', 'N', 'N', 'P', 'P', 'R', 'R', 'T', 'T'] </span>
<span>serie</span> <span>=</span> <span>[</span><span>x</span> <span>for</span> <span>x</span> <span>in</span> <span>range</span><span>(</span><span>20</span><span>)]</span>
<span>f</span> <span>=</span> <span>lambda</span> <span>x</span><span>:</span> <span>chr</span><span>(</span><span>x</span> <span>+</span> <span>66</span><span>)</span> <span>if</span> <span>x</span> <span>%</span> <span>2</span> <span>==</span> <span>0</span> <span>else</span> <span>chr</span><span>(</span><span>x</span> <span>+</span> <span>65</span><span>)</span>
<span>[</span><span>f</span><span>(</span><span>x</span><span>)</span> <span>for</span> <span>x</span> <span>in</span> <span>serie</span><span>]</span>
<span># output: ['B', 'B', 'D', 'D', 'F', 'F', 'H', 'H', 'J', 'J', 'L', 'L', 'N', 'N', 'P', 'P', 'R', 'R', 'T', 'T'] </span>
serie = [x for x in range(20)] f = lambda x: chr(x + 66) if x % 2 == 0 else chr(x + 65) [f(x) for x in serie] # output: ['B', 'B', 'D', 'D', 'F', 'F', 'H', 'H', 'J', 'J', 'L', 'L', 'N', 'N', 'P', 'P', 'R', 'R', 'T', 'T']

Enter fullscreen mode Exit fullscreen mode

原文链接:List/Dict comprehension

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
The greatest test of courage on earth is to bear defeat without losing heart.
世界上对勇气的最大考验是忍受失败而不丧失信心
评论 抢沙发

请登录后发表评论

    暂无评论内容