Home  >  Article  >  Backend Development  >  Introduction and analysis of Python's method of converting and converting data at the same time (with examples)

Introduction and analysis of Python's method of converting and converting data at the same time (with examples)

不言
不言forward
2018-11-26 16:35:361940browse

What this article brings to you is the introduction and analysis of Python’s method of converting and converting data at the same time (with examples). It has certain reference value and friends in need can refer to it. I hope it helps you.

1. Requirements

We need to call a conversion function (such as sum(), min(), max()), but first we must convert the data or Filter

2. Solution

There is a very elegant solution that combines data conversion and conversion: using generator expressions in function parameters.

Example 1: Calculate the sum of squares:

nums=[1,2,3]
s=sum(x*x for x in nums)
print(s)

Result:

14

Example 2: Determine whether the .py file exists in the specified directory

import os
filename=os.path.dirname(os.path.abspath(__file__))
files1=os.listdir(filename+"/image")
files2=os.listdir(filename)
#any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False
if any(name.endswith('.py') for name in files1):
    print('存在py文件')
else:
    print('不存在py文件')
#any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False
if any(name.endswith('.py') for name in files2):
    print('存在py文件')
else:
    print('不存在py文件')

Run result:

不存在py文件
存在py文件

Example 3: Get the minimum value based on a key in the dictionary

marks=[
    {'age':18,'money':100},
    {'age':19,'money':500},
    {'age':17,'money':900},
    {'age':20,'money':1000},
]
min_mark=min(m['age'] for m in marks)
print(min_mark)

Result:

17

3. Analysis

This This solution demonstrates some of the syntactic subtleties when passing a generator expression as a separate argument to a function (ie: not having to reuse symbols). For example, the following two lines of code mean the same thing:

s=sum((x*x for x in nums))
s=sum(x*x for x in nums)

Compared to first creating a temporary table, using a generator as parameters is usually a more efficient and elegant way. For example, if you are not using a generator expression, consider the following method to calculate the sum of squares:

nums=[1,2,3]
s=sum([x*x for x in nums])
print(s)

This also works, but it introduces an extra step and creates an extra list. For a small list. It doesn't matter, but if nums is very large, then a huge temporary data structure will be created and only used once and then discarded.

Generator-based solutions transform data in an iterative manner and are therefore much more efficient in memory usage.

Certain conversion functions such as min() and max() can accept a key parameter, which is helpful when you may prefer to use a generator. For example, in the above example [taking the minimum value based on a key in the dictionary], you can consider the following alternative:

min_mark=min(marks,key=lambda m:m['age'])

The above is the detailed content of Introduction and analysis of Python's method of converting and converting data at the same time (with examples). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete