您的位置:首页 > 编程语言 > Python开发

Python 列表推导式(列表解析式)

2016-04-09 00:00 337 查看
摘要: python 哲学:Simple is better than complex.
通过大量的实例来学习 Python 列表推导式

列表解析式重要的思想:

根据某种特征的对象生成一个指定的序列链表

想想其实说的挺有道理,我生成一个链表就是为了简单,为什么要写的那么复杂来生成链表。

一:一般列表解析式

生成一个 平方列表

squares = []
for x in range(10):
squares.append(x**2)

列表推导式:

squares = [x**2 for x in range(10)]

二 整除3的列表

numbers = []for x in range(100):
if x % 3 == 0:
numbers.append(x)

列表解析式

numbers = [x for x in range(100) if x % 3 == 0]


二:列表解析式 两个 for语句)

质数的序列

noprimes = []
for i in range(2, 8):
for j in range(i*2, 50, i):
noprimes.append(j)
primes = []
for x in range(2, 50):
if x not in noprimes:
primes.append(x)

用两个列表推导式

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
primes = [x for x in range(2, 50) if x not in noprimes]

案列二 : 生成如下数组

matrix = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]

flattened = []
for row in matrix:
for i in row:
flattened.append(i)

列表解析式法:

flattened = [i for row in matrix for i in row]


三:列表解析式中 中加 if 语句判断

实例 : 获得当前文件夹中所有的以.txt为结尾的文件 列表

import os
files = []for f in os.listdir('./my_dir'):
if f.endswith('.txt'):
files.append(f)

列表解析式法(加 if 语句):

import os
files = [f for f in os.listdir('./my_dir') if f.endswith('.txt')]


四:列表解析中 双重For语句 双重if语句

result = [(x,y)
for x in range(10)
for y in range(10)
if x + y == 5
if x > y]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 列表推导式