python学习·列表推导式

今天我们学习python推导式(Comprehensions),我们可以用推导式代替一些循环操作,以下将给出推导式的相关例子

一般推导式

对列表进行操作

strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
[x.upper() for x in strings if len(x) > 2]
>>['BAT', 'CAR', 'DOVE', 'PYTHON']
unique_lengths = {len(x) for x in strings}
unique_lengths
>>{1, 2, 3, 4, 6}

当然也可以使用map结合len函数对strings列表进行操作

set(map(len, strings))
>>{1, 2, 3, 4, 6}

运用列表生成字典

loc_mapping = {val : index for index, val in enumerate(strings)}
loc_mapping
>>{'a': 0, 'as': 1, 'bat': 2, 'car': 3, 'dove': 4, 'python': 5}

嵌套列表推导式

针对列表嵌套列表

all_data = [['John', 'Emily', 'Michael', 'Mary', 'Steven'],
           ['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]
names_of_interest = []
for names in all_data:
    enough_es = [name for name in names if name.count('e') >= 2]
    names_of_interest.extend(enough_es)
names_of_interest
>>['Steven']

上述运用循环结构的方法等价于以下推导式方法

result = [name for names in all_data for name in names if name.count('e') >= 2]
result
>>['Steven']

针对列表嵌套元组

flattened = []
for tup in some_tuples:
    for x in tup:
        flattened.append(x)
print(flattened)
>>[1, 2, 3, 4, 5, 6, 7, 8, 9]

上述运用循环结构的方法等价于以下推导式方法

some_tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
flattened = [x for tup in some_tuples for x in tup]
flattened
>>[1, 2, 3, 4, 5, 6, 7, 8, 9]

以上代码只是对于书籍《利用Python进行数据分析》的相关重述,便于对于python推导式的参考和借鉴。想要熟练的掌握,还需要在编程实践中更深入的学习。

posted @ 2019-10-30 16:08  DICTAT  阅读(253)  评论(0编辑  收藏  举报