python之列表解析

一、列表解析

  根據已有列表,高效創建新列表的方式。

  列表解析是Python迭代機制的一種應用,它常用於實現創建新的列表,因此用在[]中。

二、語法:

  [expression for iter_val in iterable]

  [expression for iter_val in iterable if cond_expr]

三、例子

3.1 例子1

要求:列出1~10所有數字的平方
1、普通方法:
 L = [ ]
for i in range(1,11):
     L.append(i**2)
print (L)
結果: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


2、列表解析
L = [ i**2 for i in range(1,11)]
print (L)
結果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

3.2、例子2

要求:列出1~10中大於等於4的數字的平方
1、普通方法:
L = [ ]
for i in range(1,11):
      if i >= 4:
      L.append(i**2)
print (L)
結果:[16, 25, 36, 49, 64, 81, 100]

2、列表解析
L = [ i**2 for i in range(1,11) if i >= 4 ]
print (L)
結果:[16, 25, 36, 49, 64, 81, 100]

3.3、例子3

要求:列出1~10所有數字的平方除以2的值
1、普通方法
L = [ ]
for i in range(1,11):
       L.append(i**2/2)
print (L)
結果:[0, 2, 4, 8, 12, 18, 24, 32, 40, 50]

2、列表解析
L = [i**2/2 for i in range(1,11) ]
print (L)
結果:[0, 2, 4, 8, 12, 18, 24, 32, 40, 50]

3.4、例子4

要求:實現兩個列表中的元素逐一配對。
1、普通方法:
L1 = ['x','y','z']
L2 = [1,2,3]      
L3 = [ ]
 for a in L1:
     for b in L2:
        L3.append((a,b))
print (L)
結果:[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

2、列表解析:
L1 = ['x','y','z']L2 = [1,2,3]
L3 = [ (a,b) for a in L1 for b in L2 ]
print (L)
結果:[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

3.5、例子5

數據庫bookinfo對應model類BookInfo:

def main():
    result = BookInfo.objects.all()
    print(type(result ))   # <class 'django.db.models.query.QuerySet'>
    ids = [list_list(item) for item in result ]
    print(ids)  # [[1, 'python'], [2, 'java']]
    print(type(ids))  # <class 'list'>
def list_list(item):
    return [item.id, item.btitle]
if __name__ == '__main__':
    main()
說明:QuerySet可以遍歷,列表解析的結果是一個列表[],[]內部每遍歷一遍可以加入一個列表,即列表嵌套[[],[],[]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章