Home > Backend Development > Python Tutorial > 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)

不言
Release: 2018-11-26 16:36:10
forward
2014 people have browsed it

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)
Copy after login

Result:

14
Copy after login

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文件')
Copy after login

Run result:

不存在py文件
存在py文件
Copy after login

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)
Copy after login

Result:

17
Copy after login

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)
Copy after login

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)
Copy after login

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'])
Copy after login

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!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template