python 只取数值_Python:你会生成列表吗?-- 列表生成式
當有人問你:“你會用 Python 生成列表嗎?”
我想你一定會說:“當然會啊,這有什么難的?!?/p>
那人再問:“那你會列表生成式嗎?”
你:“啊?好像不會?!?/strong>
好的,現在我已經成功用一個巧妙地開頭帶入了今天的主題
那么我們今天就來說一說 Python 的列表生成式,如果您已經很熟練了,那可真棒!不會的我們繼續學下去,一般來說,如果我們要用 Python 來定義一個列表,要求列表里的元素是 0~9,我們可能會選擇這么做:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
很好,這樣的做法顯然很聰明,但是還有更聰明的:
a = list(range(10))
這兩種方法都可以滿足我們的要求,但是很顯然第二種更優秀,不過我相信這樣的列表大家都沒問題,然后我們現在有一個更無理的要求,我想要生成一個這樣的列表:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
這時你會怎么做呢?我先來介紹一種最基礎的方法吧:
a = [] #創建一個空列表
for i in range(1, 10):
a.append(i * i) #往列表里添加元素
就是使用循環,遍歷 1~9 將每個元素的平方一次存入已經創建好的空列表 a,接下來,我們今天的主角就要入場了,還記得昨天的文章里提到過的列表生成式吧
我們現在先來解決當下這個問題,最后再來回顧一下昨天的問題,現在用列表生成式來創建一個滿足上訴要求的列表:
a = [i * i for i in range(1, 10)]
其實這個可以看做是將上一個方法的循環直接放在列表里進行操作,列表 a 里存放的就是 i * i,不過 i 是屬于 1~9 的,這就叫列表生成式,那昨天哪個問題其實也很簡單嘛,先回顧一下代碼:
list = ["%d%02d" % (2019, m + 1) for m in range(12)]
這是要構建一個 2019xx 格式的日期,列表生成式是用來生成 xx 的月份元素的,即從 0~11 依次取一個數 m,然后 m + 1 就是需要的月份,好了,學會了基本的列表生成式我們現在開始進階
我們現在又有了一個更無理的要求,我們要定義一個這樣的列表:
[4, 16, 36, 64]
分析一哈,就是上一個無理要求但是只要偶數的平方嘛,那我們這個列表生成式怎么寫呢?
a = [i * i for i in range(1, 10) if i % 2 == 0]
這就是在上一個列表生成式的基礎上加了一個 if 判斷,只取 1~9 中的偶數,現在這個要求也簡單完成了,我們又提出了一個更無理的要求,我們要生成一個這樣的列表:
['1A', '2B', '3C']
這個其實更好理解了,來看一下用列表生成式怎么用:
a = [x + y for x in '123' for y in 'ABC']
這個就不解釋了,很簡單吧,當然這樣也可以用三層循環等多層循環,以上就是今天要講的全部內容了
留個課堂作業:生成一副撲克牌的點數和花色(除大小王以外),例如:
[(2, '梅花'), (2, '方塊'), (2, '紅桃'), (2, '黑桃'), (3, '梅花'), ..., (A, '梅花'), (A, '方塊'), (A, '紅桃'), (A, '黑桃')]
答案不唯一啊
總結
以上是生活随笔為你收集整理的python 只取数值_Python:你会生成列表吗?-- 列表生成式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eq linux_在线试用 200 多种
- 下一篇: 最好电脑操作系统_软件开发人员该如何选择