Python列表推导式

列表推导式提供了一种创建列表的简洁方法。

它由包含表达式的括号组成,后跟一个 for 子句,然后是
零个或多个 for 或 if 子句。表达式可以是任何东西,这意味着您可以
将各种对象放入列表中。

结果将是一个新列表,该列表是通过在其
后面的 for 和 if 子句的上下文中评估表达式而产生的。

列表推导式总是返回一个结果列表。

如果你曾经这样做过:

new_list = []
for i in old_list:
    if filter(i):
        new_list.append(expressions(i))

您可以使用列表理解获得相同的结果。注意 append 方法已经消失了!

new_list = [expression(i) for i in old_list if filter(i)]

句法

列表推导式以方括号[' 和 ']'开头,以帮助您记住
结果将是一个列表。

基本语法使用方括号。

[ expression for item in list if conditional ]

这相当于:

for item in list:
    if conditional:
        expression

让我们分解一下,看看它有什么作用。

new_list = [expression(i) for i in old_list if filter(i)]

new_list
新列表(结果)。

expression(i)
表达式基于用于旧列表中每个元素的变量。

for i in old_list
单词 for 后跟要使用的变量名,后跟
旧列表中的单词。

if filter(i)
应用带有 If 语句的过滤器。

博客展示了如何直观地分解列表理解的示例:

new_range = [i * i for i in range(5) if i % 2 == 0]

对应于:

*结果* = [*变换* *迭代* *过滤器* ]

* 运算符用于重复。过滤器部分回答了是否
应该转换项目的问题。

例子

现在当我们知道列表推导式的语法后,让我们展示一些示例以及
如何使用它。

创建一个简单的列表

让我们从创建一个简单的列表开始。

x = [i for i in range(10)]
print (x)

# This will give the output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

这样您就可以创建一个简单的列表。

使用循环和列表推导式创建列表

对于下一个示例,假设我们要创建一个平方列表。从一个空列表开始。

# You can either use loops:
squares = []

for x in range(10):
    squares.append(x**2)
 
print (squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# Or you can use list comprehensions to get the same result:
squares = [x**2 for x in range(10)]

print (squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

只需记住语法:[如果有条件,则列表中的项目的表达式]

将列表的部分相乘

将列表的每个部分乘以 3 并将其分配给一个新列表。

list1 = [3,4,5]
 
multiplied = [item*3 for item in list1] 
 
print (multiplied)
[9,12,15]

请注意 item*3 如何将每件乘以 3。

显示每个单词的第一个字母

我们将取每个单词的第一个字母并从中列出一个列表。

listOfWords = ["this","is","a","list","of","words"]

items = [ word[0] for word in listOfWords ]

print (items)

输出应该是:['t', 'i', 'a', 'l', 'o', 'w']

小写/大写转换器

让我们展示转换小写/大写字母是多么容易。

>>> [x.lower() for x in ["A","B","C"]]
['a', 'b', 'c']

>>> [x.upper() for x in ["a","b","c"]]
['A', 'B', 'C']

仅从给定字符串打印数字

此示例显示如何从字符串中提取所有数字。

string = "Hello 12345 World"
numbers = [x for x in string if x.isdigit()]
print (numbers)

>> ['1', '2', '3', '4', '5']

如果您不想要任何数字,请将 x.isdigit() 更改为 x.isalpha()。

使用列表理解解析文件

在这个例子中,我们可以看到如何从文本文件中取出特定的行。

创建一个文本文件并在其中放入一些文本。

this is line1
this is line2
this is line3
this is line4
this is line5

将文件另存为 test.txt

# Then create the filter by using list comprehension:

fh = open("test.txt", "r")

result = [i for i in fh if "line3" in i]

print (result)

输出:['this is line3\n']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值