#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 学习网站:www.liaoxuefeng.com
#****************************************************
# Python3 高级特性-列表生成式 *
#****************************************************
print ("--------------------分割线------------------")
#============
# 列表生成式
#============
'''
列表生成式即List Comprehensions,是python内置的非常简单却强大的可以
用来创建list的生成式。
'''
# 生成list[1, 2, 3, 4, 5],生成1..n,即range(1, n-1)
print( list(range(1,6)) ) # [1, 2, 3, 4, 5]
# 生成[1*1, 2*2, 3*3,...,n*n],方法一循环:
list_a = []
for x in range(1,6):
list_a.append(x*x)
print(list_a) # [1, 4, 9, 16, 25]
# 循环太繁琐,可以用一行列表生成式语句代替
#list_b = [x*x for x in range(1,6)]
print( [x*x for x in range(1,6)] ) # [1, 4, 9, 16, 25]
'''
写列表生成式时,把要生成的元素x*x放到前面,后面跟for循环,就可以把list
创建出来。for循环后面还可以加上if判断。
'''
# 输出1-10之间偶数的平方
list_b = [x*x for x in range(1, 11) if x%2 == 0]
print( list_b ) # [4, 16, 36, 64, 100]
print ("--------------------分割线------------------")
# 两层循环,生成全排列
list_b = [m+n for m in 'AB' for n in 'XYZ']
print( list_b ) # ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ']
# 列出当前目录上一层目录下的所有文件和目录名
import os
print( [d for d in os.listdir('../')] ) # ['GIT', 'Python']
# for循环同时使用两个甚至更多变量,如dict的items()可以同时迭代key、value
dict_a = {'name':'tom', 'age':8}
for key,val in dict_a.items():
print(key,val, end=',') # name tom,age 8,
print()
# 列表生成式使用两个变量来生成list
dict_b = {'name':'jim', 'gender':'M'}
list_b = [ key + '=' + val for key,val in dict_b.items() ]
print( list_b ) # ['name=jim', 'gender=M']
# 把list中所有的字符串都变成小写
list_c = ['TOM', 'JIM', 'NIK']
print( [t.lower() for t in list_c] ) # ['tom', 'jim', 'nik']
# 将下面列表list_d中字符串变为小写,非字符串不处理
list_d = ['Hello', 'World', 18, 'Apple', None]
list_e = [s.lower() for s in list_d if isinstance(s, str)]
print( list_e ) # ['hello', 'world', 'apple']
print ("--------------------分割线------------------")
Python3 学习笔记16_高级特性(列表生成式)_20180307
最新推荐文章于 2018-04-08 20:59:10 发布