Python for 取ZIP二次函数的取值范围值

Python中的map函数、zip函数、filter函数和reduce函数
实际上提供了一个内置的工具,map函数。这个函数的主要功能是对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表。
>>>counters = [1,2,3]
>>def inc(x) :return x+10
>>>list(map(inc, counters))
[11,12,13]
>>> map(lambda x : x * 2,[1,2,3,4,[5,6,7]])
[2, 4, 6, 8, [5, 6, 7, 5, 6, 7]]
如果给出了额外的可迭代参数,则对每个可迭代参数中的元素并行的应用函数。
>>> def abc(a, b, c):
return a*10000 + b*100 + c
>>> list1 = [11,22,33]
>>> list2 = [44,55,66]
>>> list3 = [77,88,99]
>>> map(abc,list1,list2,list3)
map只做了列上面的运算,而列表推导做了笛卡尔乘积。
函式说明:zip(seq1[,seq2 [...]])->[(seq1(0),seq2(0)...,(...)]。
同时循环两个一样长的函数,返回一个包含每个参数元组对应元素的元组。若不一致,采取截取方式,使得返回的结果元组的长度为各参数元组长度最小值。
>>>for x,y in zip([1,2,3],[4,5,6])
>>>print x,y
>>>for x,y in zip([1,2,3],[4,5])
>>>print x,y
filter函数
filter(bool_func,seq):此函数的功能相当于过滤器。
调用一个布尔函数bool_func来迭代遍历每个seq中的元素,返回一个使bool_seq返回值为true的元素的序列。
>>> filter(lambda x : x%2 == 0,[1,2,3,4,5])
reduce函数
reduce(func,seq[,init]):func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值:如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。
>>> reduce(lambda x,y : x + y,[1,2,3,4])
>>> reduce(lambda x,y : x + y,[1,2,3,4],5)测试环境: python3.4
压缩任意多个[0,N]参数,形成新的复合元组。
通过几个简单的例子认识zip()
1. 相同长度元组
a, b = [0, 1], [2, 3]
ab = zip(a, b)
print(list(ab))
zip()逆向处理——解压
ab = zip(a, b)
unzip_a, unzip_b = zip(*ab)
print(list(unzip_a) == a and list(unzip_b) == b)
解压表达式zip(* tuple),按照zip()的规则拆分元组。
c = [4, 5]
ab = zip(a, b)
abc = zip(ab, c)
print(list(abc))
如上例,ab已经是一个二元元组,与元组c合并,结果是一个复合形式的新元组,abc的第一个元素是((0, 2), 4)。
由此可以看出zip()的功能就是将两个元组(或者称为list)的内容按照一一对应的关系组合成新的元组,且保留原先的数据形式。
2. 不等长元组
w, x, y, z = [], [1], [2, 3], [4, 5, 6]
xyz = zip(x, y, z)
print(list(xyz))
wxy = zip(w, x, y)
print(list(wxy))
根据输出结果可知,zip()压缩时以长度最短的元素判断是否结束。
故如果参数中某一元组为空,合并后的结果就是空;如果参数中最小长度为1,合并后的元组长度为1,剩余元组数据丢失。
如果希望按照最大长度合并,缺少内容部分使用None填充,python提供itertools.zip_longest()方法,示例如下:
# 最大参数长度压缩元组,缺少参数部分使用None占位
import itertools
longest_wxyz = itertools.zip_longest(w, x, y, z)
print(list(longest_wxyz))
# [(None, 1, 2, 4), (None, None, 3, 5), (None, None, None, 6)]
zip()的结果只能使用一次?为什么?
a, b = 'ab', 'cd'
ab_zip_obj = zip(a, b)
print(ab_zip_obj)
print(list(ab_zip_obj))
print(list(ab_zip_obj))
编写过示例代码之后会发现zip()之后的结果只能“使用一次”。如代码示例中所写,第二次使用list(ab_zip_obj))输出ab_zip_obj的内容是[],这是为什么呢?查看python3提供zip()的源代码,zip()实际上是一个生成器对象,故使用list()获取zip()结果时,已经相当于是完成一次迭代遍历,第二次再次使用list()时迭代已经结束,所以返回[]。
zip的源码实现
def zip(*iterables):
sentinel = object()
iterators = [iter(it) for it in iterables]
while iterators:
result = []
for it in iterators:
elem = next(it, sentinel)
if elem is sentinel:
result.append(elem)
yield tuple(result)
以上只是我个人的总结与思考,如果遗漏或不对之处,望大家指出,共同进步,谢谢!
本文已收录于以下专栏:
相关文章推荐
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素按顺序组合成一个tuple,每个tuple中包含的是原有序列中对应序号位置的元素,然后返回由这些tuples...
又是在写一个小项目时用到了python的某个知识点函数,由于在实际的项目中用到了所以觉得应该复习一下它的基本知识了
zip函数  通俗一点就是一个可以结合多个列表的一个函数
也参照了其他一些博客的...
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
看openstack的代码,遇到一个内建函数zip不明白其意思:
# Adjust the weights in the grid by the functions weight adjustm...
初学python时有很多操作都是通过比较笨的方法处理的,后来感觉通过python中的内置函数zip()可以非常方便的简化代码量,下面从初学者的角度谈谈zip()函数。
一、基础知识
测试环境: python3.4
zip的作用压缩任意多个[0,N]参数,形成新的复合元组。
Python的zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:
x = [1, 2,...
一、代码引导
首先看这一段代码:
1 &&& name=('jack','beginman','sony','pcky')
2 &&& age=(05,20...
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:
x = [1, 2, 3]
y = [4, 5, ...
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:
x = [1, 2, 3]y y
= [4, 5, 6]z...
Python的zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:
x = [1, 2,...
他的最新文章
讲师:唐宇迪
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用户名:1594cqb
文章数:43
评论数:123
访问量:90274
注册日期:
阅读量:1297
阅读量:3317
阅读量:456739
阅读量:1141413
51CTO推荐博文
ZIP文件格式是一种常见的存档和压缩标准,这个zipfile模块提供了工具来创建、读取、写入、附加和列出一个ZIP文件。使用ZIP64扩展(即压缩文件大小超过4G),它能解压加密的ZIP文件,解密过程很慢。1、测试是否为ZIP文件is_zipfile()函数会返回一个布尔值来表示是否为ZIP文件,代码如下:#!/usr/bin/python
import zipfile
for filename in ['print_name.py', 'python.zip', 'uwsgi', 'admin']:
print '%20s %s' % (filename, zipfile.is_zipfile(filename))[root@www home]# python zipfile_is_zipfile.py
print_name.py False
python.zip True
uwsgi False
admin False#!/usr/bin/env python
import zipfile
zf = zipfile.ZipFile('python.zip', 'r')
print zf.namelist()[root@www home]# python zipfile_namelist.py
['test.txt']#import datetime
import zipfile
def print_info(archive_name):
zf = zipfile.ZipFile(archive_name)
for info list():
print info.filename
print '\tComment:\t', ment
print '\tModified:\t', datetime.datetime(*info.date_time)
print '\tSystem:\t\t', info.create_system, '(0 = Windows, 3 = Unix)'
print '\tZIP version:\t', info.create_version
print '\tCompressed:\t', press_size, 'bytes'
print '\tUncompressed:\t', info.file_size, 'bytes'
if __name__ == '__main__':
print_info('python.zip')[root@www home]# python zipfile_infolist.py
3 (0 = Windows, 3 = Unix)
ZIP version:
Compressed:
Uncompressed:
bytes#!/usr/bin/env python
import zipfile
zf = zipfile.ZipFile('python.zip')
for filename in ['test.txt', 'notthere.txt']:
info = zf.getinfo(filename)
except KeyError:
print 'ERROR: Did not find %s in zip file' % filename
print "%s is %d bytes" % (info.filename, info.file_size)[root@www home]# python zipfile_getinfo.py
test.txt is
ERROR: Did not find notthere.txt in zip file#!/usr/bin/env python
import zipfile
zf = zipfile.ZipFile('python.zip')
for filename in ['test.txt', 'notihere.txt']:
data = zf.read(filename)
except KeyError:
print 'ERROR: Did not find %s in zip file' % filename
print filename, ':'
print repr(data)
print[root@www home]# python zipfile_read.py
README.txt :
'The examples for the zipfile module use this file and example.zip as data.\n'
ERROR: Did not find notthere.txt in zip file#!/usr/bin/env python
from zipfile_infolist import print_info
import zipfile
print 'creating archive'
zf = zipfile.ZipFile('zipfile_write.zip', 'w')
print 'adding text.txt'
zf.write('text.txt')
print 'closing'
zf.close()
print_info('zipfile_write.zip')[root@www home]# python zipfile_write.py
creating archive
adding text.txt
3 (0 = Windows, 3 = Unix)
ZIP version:
Compressed:
Uncompressed:
bytes#!/usr/bin/env python
from zipfile_infolist import print_info
import zipfile
import zlib
compression = zipfile.ZIP_DEFLATED
compression = zipfile.ZIP_STORED
modes = { zipfile.ZIP_DEFLATED: 'deflated',
zipfile.ZIP_STORED:
print 'creating archive'
zf = zipfile.ZipFile('zipfile_write_compression.zip', mode='w')
print 'adding text.txt with compression mode', modes[compression]
zf.write('text.txt', compress_type=compression)
print 'closing'
zf.close()
print_info('zipfile_write_compression.zip')[root@www home]# python zipfile_write_compression.py
creating archive
adding text.txt with compression mode deflated
3 (0 = Windows, 3 = Unix)
ZIP version:
Compressed: 101923 bytes
Uncompressed:
bytes#!/usr/bin/env python
from zipfile_infolist import print_info
import zipfile
zf = zipfile.ZipFile('zipfile_write_arcname.zip', mode='w')
zf.write('text.txt', arcname='NOT_README.txt')
zf.close()
print_info('zipfile_write_arcname.zip')[root@www home]# python zipfile_write_arcname.py
NOT_README.txt
3 (0 = Windows, 3 = Unix)
ZIP version:
Compressed:
Uncompressed:
bytes更多博文请移步: 本文参考: & & & & &本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 二次函数的取值范围 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信