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!