python中的列表综合是一种强大的工具,可让您使用一行代码创建列表,集合和词典。当使用列表综合来创建列表时,您可以利用条件逻辑,表达式和回调功能来控制推入新列表的元素的输出。
在Python中创建列表有很多方法。我们将特别讨论循环,列出综合以及两者如何相似。
要使用for Loop创建列表,您必须
- 实例化一个空列表
- 循环在一个峰值上(例如列表,元组,范围或字典对象)
- 将每个元素附加到列表的末尾
使用一个for循环,让我们创建一个包含值的双重0-10的列表:
double = []
for i in range(11):
result = i * 2
double.append(result)
double
# >>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
使用列表理解,我们可以将其简化为一行代码
double = [ i * 2 for i in range(11) ]
double
# >>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
要过滤哪个值加倍,我们可以添加有条件的if语句。我们只希望将数字加倍并存储在列表中。
double = []
for i in range(11):
if i % 2 == 0:
result = i * 2
double.append(result)
double
# >>> [0, 4, 8, 12, 16, 20]
列表理解:
double = [ i * 2 for i in range(11) if i % 2 == 0]
double
# >>> [0, 4, 8, 12, 16, 20]
我们还可以添加另一个子句,并将其作为if表达式;如果值甚至是加倍,则返回另一件事(让我们使用“ hi”一词)。注意,列表理解的结构将有所不同:
double = [ i * 2 if i % 2 == 0 else "hi" for i in range (11)]
# >>> [0, 'hi', 4, 'hi', 8, 'hi', 12, 'hi', 16, 'hi', 20]
的原因是由于列表理解的语法造成的:
new_list = [ expression for item in iterable optional_if_condition ]
列表理解是使用三个重要组件以及一个可选的第四组来构建的:
- 表达式
- 项目
- 峰值
- 可选的if语句
表达式可以是项目本身,调用函数或任何返回值的表达式。例如,您可以拥有10个“ hi”的列表:greetings = ["hi" for i in range(11)]
该项目是峰值中的元素。
峰值可以是一次返回其元素的列表,集合,字典,范围或任何对象。
可选的IF语句用作过滤器。如果条件评估为true,则表达式组件会评估并将返回值推入列表中,否则表达式不会在迭代的那一轮中运行。使用上面的示例,如果您的条件是“ true”,则可以具有10个“ HI”列表,如果您的条件为“如果是false”,则可以具有空白列表。对于复杂的过滤器,可以使用功能来进行分析。
使用列表理解的好处是,您可以在许多情况下使用单个工具来创建列表。在JavaScript中,您可以使用.map()和.filter()方法创建新列表。但是,没有一种方法将两者结合在一起。 Python还具有.map()和.filter()方法。但幸运的是,在Python中,有了列表理解,您有1个可以使用两种方法的工具。
Python包含其他列表数据结构,您也可以对它们应用理解。我将特别涵盖集合和词典理解。
set和字典理解彼此相似。设置和字典都使用卷曲括号并将唯一元素输出到无序的列表中,但是使用字典,您还必须包括与密钥相对应的值。
语法:
new_set = { expression for item in iterable optional_if_condition }
new_dict = { key_expression : value_expression for item in iterable optional_if_condition }
让我们创建一个集合列表,其中包含句子的字母
sentence = "Today, we are learning list, set, and dictionary comprehension"
set_sentence = { item for item in sentence}
set_sentence
# >>> {',', 'l', 'm', 'T', 'r', 'a', 'e', 'n', 'i', 't', 'c', ' ', 's', 'p', 'd', 'o', 'y', 'w', 'h', 'g'}
现在,让我们创建一个词典,其中键是字母,值是句子中每个字符的数量。
set_sentence = { item : sentence.count(item) for item in sentence}
set_sentence
# >>> {'T': 1, 'o': 4, 'd': 3, 'a': 5, 'y': 2, ',': 3, ' ': 8, 'w': 1, 'e': 6, 'r': 4, 'l': 2, 'n': 6, 'i': 5, 'g': 1, 's': 3, 't': 3, 'c': 2, 'm': 1, 'p': 1, 'h': 1}
对于字典理解,您可以使用2个项目返回两个值。例如,我们可以在现有字典上创建一个字典enumerating
a列表或使用.items()方法。
fruits = ["apples", "bananas", "grapes", "oranges", "pineapples"]
fruit_dict = { key : value for key, value in enumerate(fruits)}
fruit_dict
# >>> {0: 'apples', 1: 'bananas', 2: 'grapes', 3: 'oranges', 4: 'pineapples'}
phone_book = {"John" : 3334445555, "Rose" : 5555555555, "Alan" : 1234567890}
phone_book_edit = { key.upper() : value for key, value in phone_book.items()}
# >>> {'JOHN': 3334445555, 'ROSE': 5555555555, 'ALAN': 1234567890}
希望我的指南能帮助您进行编程旅程。请随时发表评论,提出问题或提供反馈。
最后,愉快的编码!