列表理解
Python列表数据类型是数据结构的基本要素之一。有了列表理解功能,我们可以从列表中生成一系列列表。
例如,列表理解的最简单形式是执行列表的浅副本,如下所示:
a_list = [1, 2, 3, 4, 5]
b_list = a_list[:]
我们在这里说的是,嘿,python只是按值或成员按成员来执行所有元素的副本。因此,新列表中的更改不会更改原始列表。例如
在上面的python shell中,我们看到两个变量包含相等的值,但请参考不同的对象。
Python **is** operator compares two variables and returns True if they reference the same object. If the two variables reference different objects, the is operator returns False as in the above example. In other words, the **is** operator compares the identity of two variables and returns True if they reference the same object.
这是使用循环实现相同结果的另一种方法:
b_list = []
for i in a_list:
b_list.append(i)
列表理解的一般语法是:
new_list = [value for_statement if_expression]
value aka expression
:直接从列表中获取一个值
for_statement
:一个或多个for statements
,具有成员条件
if clauses
:用于评估某些条件
让我们看看以下示例:
>>>[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
上面的代码狙击手两个循环,以检查不同列表中两个值的条件,这些条件又基于if条款产生元组。
设置理解
一组是无重复元素的无序集合。除了该集合的语法为{}
外,将使用与列表理解相同的概念。例如,让我们从给定列表中创建一个具有以下集合理解的集合。
>>> a_list = [1, 2, -2, 1, -1, 2, 3]
>>> new_set = {i for i in a_list if i > 0}
>>> new_set
>>> {1, 2, 3}
您可能已经注意到没有重复值,因为消除重复项会自动发生,因为我们正在通过{}
创建集合。
字典理解
我们将使用类似的方法,但要复杂一些。在字典理解中,有必要使用语法创建一个生成键值对的循环:
key:value
假设我们有一个要成为新生成词典的基础的元素列表。
>>> list_tuples = [('Netherlands', 'Amsterdam'), ('Germany', 'Berlin')]
>>> new_dict = { i[0] : i[1] for i in list_tuples }
注意在键值表达式中使用结肠(:)
。然后,如果我们想检查,让我们评估以下内容:
>>> new_dict['Netherlands']
'Amsterdam'
>>>
让我们看看如何从两个给定列表中创建字典的另一个示例。
>>> countries = ['China', 'India', 'U.S.A', 'Indonesia']
>>> population = [1_452_661_848, 1_413_052_163, 335_683_841, 280_581_836]
>>> four_largest_countries_by_population = { countries[i]: population[i] for i in range(len(keys)) }
>>> four_largest_countries_by_population
{'China': 1452661848, 'India': 1413052163, 'U.S.A': 335683841, 'Indonesia': 280581836}
>>>
注意:在上面,我们假设两个列表的长度相同。
我们甚至可以通过使用内置 zip 函数在上面的示例中提高代码的性能,以合并列表。如果通过的迭代器的长度不同,
最少项目的迭代器决定了新迭代器的长度。
最后一句话
希望这能阐明那些开始学习python的人,并为那些具有扎实知识的人提供复活。像往常一样,即使对于一些破碎的句子,想法或概念,您也欢迎您发表评论。感谢您的阅读。