1. 程式人生 > >07-python學習筆記-列表生成式

07-python學習筆記-列表生成式

2017.6.4
參考資料

可以使用List Comprehensions來建立list,它是Python內建的,非常簡單,非常強大。

例子1

要生成list[1,2,3,4,5,6],使用list(range(1,7))

>>> list(range(1,7))
[1, 2, 3, 4, 5, 6]

例子2

要生成[1x1, 2x2, 3x3, …, 10x10],怎麼做?

當我們使用迴圈的時候

>>> L=[]
>>> for x in list(range(1,11)):
...     L.append(x*x)
...
>>> >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

當我們使用列表生成式時

>>> [x*x for x in list(range(1,10))]
[1, 4, 9, 16, 25, 36, 49, 64, 81]

for迴圈後面還可以加上if判斷,這樣我們就可以篩選出符合自己條件的數字,如果我們想篩選出偶數的平方

>>> [x*x for x in list(range(1,10)) if x%2==0]
[4, 16, 36, 64]

使用兩層迴圈,生成全排列

>>> [x+y for x in '123' for y in 'abc']
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

複習使用06篇筆記中的迭代,使用兩個變數來生成list

這裡在做的時候遇到一個小問題

>>> dict={'a':1,'b':2,'c':3}
>>> [k + '=' + v for k,v in dict.items()]
Traceback (most recent call last):
  File "<stdin>"
, line 1, in <module> File "<stdin>", line 1, in <listcomp> TypeError: Can't convert 'int' object to str implicitly

value不能是整形
更改value成string型別,重新做

>>> dict={'a':'A','b':'B','c':'C'}
>>> [k + '=' + v for k,v in dict.items()]
['b=B', 'c=C', 'a=A']

練習

把一個list中所有的字串變成小寫:

>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

但是,當list中既包含字串,又包含整數,由於非字串型別沒有lower()方法,所以列表生成式會報錯

>>> L = ['Hello', 'World', 'IBM', 'Apple',13]
>>> [s.lower() for s in L]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
AttributeError: 'int' object has no attribute 'lower'

下面,修改列表生成式,通過新增if語句保證列表生成式能正確地執行,提示,內建的isinstance函式可以判斷一個變數是不是字串:

>>> [s.lower() for s in L if isinstance(s,str)==True]
['hello', 'world', 'ibm', 'apple']

相關推薦

07-python學習筆記-列表生成

2017.6.4 參考資料 可以使用List Comprehensions來建立list,它是Python內建的,非常簡單,非常強大。 例子1 要生成list[1,2,3,4,5,6],使用list(range(1,7)) >

Python學習列表生成列表生成器

一、列表生成式 列表生成式:顧名思義就是python中生成列表的表示式。運用列表生成式可以快速的生成列表,程式碼卻很簡潔。 示例一: 如要生成 [1, 2, 3, 4, 5, 6, 7, 8, 9] 列表: lb = [x for x in ran

Python學習筆記-列表的條件過濾生成

需求 請編寫一個函式,它接受一個 list,然後把list中的所有字串變成大寫後返回,非字串元素將被忽略。 程式碼 def toUppers(L): L1=[x.upper() for

python學習筆記——列表操作

參數 統計 一個 del blog count insert lang python列表 python列表操作——增 append:追加一條數據到列表的最後 name = ["Zhangsan","XiongDa","Lisi"] name.append("wangwu"

python學習筆記列表和元組(三)

python列表(list)是Python以及其他語言中最常用到的數據結構之一。Python使用使用中括號 [ ] 來解析列表。列表是可變的(mutable)——可以改變列表的內容。對應操作:1、查([]切片操作) name = [‘tom‘,‘張三‘,‘joker‘,‘李四‘] print(name[2])

學習筆記GAN001:生成對抗網絡,只需10步,從零開始到調試

sar quest 從零開始 http demo pip lib download mark 生成式對抗網絡(gennerative adversarial network,GAN),目前最火的非監督深度學習。一個生成網絡無中生有,一個判別網絡推動進化。學技術,不先著急看書

4.Python學習筆記:列表[增刪改查]

clas pre python學習 == 參數 code app size 一個 a=[0,1,2,3,4,5,7,6,8] 增 append a.append(9) #默認增加在最後位置,只能有一個參數 b.insert(1,2) #在1位置插入2

python List Comprehensions(列表生成)

itl 51cto os模塊 技術分享 tle 出錯 生成式 oos pri 列表生成式: 創建List一、普通創建List#!/usr/bin/python#common establish waylis1 = [];for x in range(1, 10): l

Python學習筆記列表之使用列表

可恥 sim 開始 使用 clas 筆記 好的 ima true 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線-------------------------------

Python高階特性——列表生成與生成器

列表生成式:   1)、    L=[x*x for x in range(1,11) if x%2==0]  等價於    L = []    for x in range(1, 11):       if x%2==0:         L.append(x * x)  2)、    a=[m

python基礎之列表生成

例1: >>> List=[x for x in range(10)] >>> List [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 等價於: >>> List=[] >>> for x in ra

python語法_列表生成_生成

python 類比 span 生成器 進行 生成式 什麽 next 之前 列表生成式 a = [x for x in range(10)] print(a) x 可進行操作 a = [x*2 for x in range(10)] print(a) x甚至可以為函數, de

Python學習筆記-列表與元組

·序列  筆記: 在Python中,最基本的資料結構為序列。序列中每個元素都有編號,其位置或索引,其中第一個元素索引為0,第二個為1,以此類推。 Python內建多種序列,其中包含列表、元組、字元串等,他們都可以稱為“容器”(字典也稱作容器)。 注意:列表可以修改,而元組和字串則不能修改(可以重新賦值)。

Python中list列表生成如何操作使用?list詳解

列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 一、舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

【廖雪峰Python習題集】列表生成

如果list中既包含字串,又包含整數,由於非字串型別沒有lower()方法,所以列表生成式會報錯: >>> [s.lower() for s in L] Traceback (mos

Python學習筆記——列表(list)

列表(list) 是一種集合。特點:[]定界符、可變、有序、支援下標、逗號分隔、元素可以重複、元素查詢速度非常慢。 列表中的資料型別可以不同。 常用方法: i.append(x):將元素x新增到列表i尾部 i.extend(L):將列表L中所有元素新增至列表i尾部 i.insert(index

Python生成器和列表生成

生成器: 在Python中, 這種一邊迴圈一邊計算的機制, 稱為生成器:generator 列表生成式:L(list) = [x * x for x in range(10)] 生成器:    g(generator) = (x * x for x in range(10)

python中的列表生成 | 字典生成

1.列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

python高階特性-列表生成

列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>

python 迴圈與列表生成

一般而言,在迴圈與列表生成式都可選的時候,列表生成式感覺速度會更快一點,做一個對比試驗: # python3 import time def compare_time(N): start