Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数量和序列元素的数量是一致的 下面是简单的代码 p = (1,2,3) x,y,y = p >>>x ---1 >>>y---2 >>>z---3 **代码实现1** data = [ 'ABC',20,30.11,(16,28,99) ] # data中的…
如果一个可迭代对象的元素个数超过了变量的个数,会出现"解压值太多"的异常,python提供*号表达式(码夫破石的理解)来解决. 1,求一组平均值,就以类似学生成绩为例,要求是去掉第一个和最后一个学生的分数. 1 #!usr/bin/env python3 2 # -*-Coding:utf-8 -*- 3 ''' 4 如果一个可迭代对象的元素个数超过变量个数时,会出现"太多解压值"的异常 5 ''' 6 7 #求一组数据的平均值(类似学生成绩),但是你只知道要去除第…
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数量和序列元素的数量是一致的 下面是简单的代码 p = (1,2,3) # 这里的p是一个元组tuple x,y,y = p >>>x ---1 >>>y---2 >>>z---3 **代码实现1** data = [ 'ABC',20,30.11,(16,…
N个数量的序列(可迭代对象),赋值给N个变量. 字符串: 1 #!usr/bin/env python3 2 # -*- Coding=utf-8 -*- 3 4 ''' 5 解压序列(或者任何可迭代对象)赋值给多个变量,唯一的前提就是,变量的数量必须跟序列元素的数量一样 6 ''' 7 8 say = "hello" #定义字符串 9 a, b, c, d, e = say #按顺序赋值 10 print(a, b, c, d, e) #打印 元组: 1 #!usr/bin/env…
Python 命令参数  print 命令 : #默认的print是有个 空格,和换行的 # print(sep= ' ') # print(end = '/n') a = 'sunjinchao' b = 'xianfangdi' # print(a,b) # print(a) # print(b) #输出:sunjinchao xianfangdi #输出:sunjinchao #输出:xianfangdi print(a,end = 'love ')#换行 print(b,a,sep =…
解压序列: a,b=(1,2) # a,b=[1,2] print(a,b) #输出结果:1 2 #获取第一个值和最后一个值 a,*_,c=(1,2,3,4,5,6,7,8,9) print(a) print(c) # 输出结果: #获取第二个值和倒数第二个值 a,b,*_,c,d=(1,2,3,4,5,6,7,8,9) print(b) print(c) # 输出结果: 正常情况下,我们交换两个变量的值需要借助一个临时变量: a=1 b=2 temp=a a=b b=temp print(a)…
补充:解压序列 需求一,不通过索引取一个列表的第一个元素和最后一个元素 需求二,交换两个变量的值 L=[1,2,3,4,5,6,7,8,9] #把列表第一个元素赋值给a,最后一个元素赋值给c #中间的使用*号代表全部赋值给_ a,*_,c = L print(a,c) a = 1 b = 2 #ab值需要交换,可以定义一个中间变量c也可以通过解压序列来实现 b,a = a,b print(a,b) 1 9 2 1…
本节内容 1.迭代器协议与for循环 2.三元表达式 3.解压序列 4.列表解析 5.生成器 迭代器协议与for循环 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中下一项,要么引起异常报错(因为迭代到头了,只能往后走不能倒退) 2.可迭代对象:实现了迭代器协议的对象(其实python中所有对象都不是可迭代对象,如何实现:对象内部定义一个__iter__方法) 3.协议就是一种约定,可迭代对象实现了迭代器协议,python内部工具(如for循环,sum,max等)使用迭…
转 http://m.blog.csdn.net/blog/wice110956/26597179# 这里讨论使用Python解压如下五种压缩文件: .gz .tar  .tgz .zip .rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打包工具,只打包,不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,…
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar  .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. tar: linux系统下的打包工具.仅仅打包.不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip.尽管使用相似的算法,能够打包压缩多个文件.只是分别压缩文件.压缩率低于tar. rar:打包压缩文件.最初用于DOS,基于window操作系统. 压缩…
很多伙伴对 Python 的迭代器.可迭代对象.生成器这几个概念有点搞不清楚,我来说说我的理解,希望对需要的朋友有所帮助. 1 迭代器协议 迭代器协议是核心,搞懂了这个,上面的几个概念也就很好理解了. 所谓迭代器协议,就是要求一个迭代器必须要实现如下两个方法 iterator.__iter__() Return the iterator object itself. iterator.__next__() Return the next item from the container. 也就是说…
这里讨论使用Python解压如下五种压缩文件: .gz .tar  .tgz .zip .rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打包工具,只打包,不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar. rar:打包压缩文件,最初用于DOS,基于window操作系统.压缩率比zip高,…
一.python3解压文件 1.python 解压文件代码示例 如下代码主要实现zip.rar.tar.tar.gz四种格式的压缩文件的解压 def unzip_file(src_file, dst_dir=None, unzipped_files=None, del_flag=True): """ 根据指定的压缩文件类型递归解压所有指定类型的压缩文件 :param src_file: 解压的源文件路径,可以为文件夹路径也可以是文件路径 :param dst_dir: 解压后…
Python把同一个对象循环赋值给另外一个变量,修改一个对象,其他对象也修改了 >>> row=['_'] * 3 >>> board = [] >>> for i in range(3): ... board.append(row) ... >>> row ['_', '_', '_'] >>> board [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] &g…
一.问题: 现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 二.解决方案: 代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 >>> p = (4, 5) >>> x, y = p >>> x 4 >>> y 5 >>> >>> data = [ 'ACME', …
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚. 简要说明三者关系 1)可迭代对象包含迭代器.2)如果一个对象拥有__iter__方法,其是可迭代对象:如果一个对象拥有next方法,其是迭代器.3)定义可迭代对象,必须实现…
解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. patool库支持的格式包括: 7z (.7z, .cb7), ACE (.ace, .cba), ADF (.adf), ALZIP (.alz), APE (.ape), AR (.a), ARC (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), COMPRES…
for循环 for i in s: print(i) 在上述for循环中,不断地将s中的值赋值给i,然后打印出来.这种只针对s中元素的循环称为对s的迭代,能够迭代的s称为可迭代的. python为了实现for循环,需要迭代的对象实现迭代协议或序列协议,以获取一个迭代器.下面只讨论迭代协议,即实现一个预定义的方法: __iter__(self):返回一个迭代器 for在对对象进行迭代时,会调用对象的__iter__方法构造一个迭代器,然后对该迭代器进行迭代,迭代过程就是不断调用迭代器的方法获取元素…
解压 zip 文件 基本解压操作 import zipfile ''' 基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]]) mode:可选 r,w,a 代表不同的打开文件的方式:r 只读:w 重写:a 添加 compression:指出这个 zipfile 用什么压缩方法,默认是 ZIP_STORED,另一种选择是 ZIP_DEFLATED: allowZip64:bool型变量,当设置为True时可以创建大于 2G…
Python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return l print(func(1)) # [1] print(func(2)) # [1,2] print(func(3)) # [1,2,3] 二.函数名的应用 函数名指向的是函数的内存地址,加上()就执行这个函数 def func(args): return args print(func) #…
在当前路径解压zip压缩包,生成同名文件夹,内部目录结构与压缩包一致 import zipfile import os def un_zip(file_name): """unzip zip file""" zip_file = zipfile.ZipFile(file_name) ''' ]): pass else: os.mkdir(file_name.split(]) ''' for names in zip_file.namelist()…
zipfile实现压缩整个目录和子目录 import os,shutil,zipfile,glob def dfs_get_zip_file(input_path,result): # files = os.listdir(input_path) for file in files: if os.path.isdir(input_path+'/'+file): dfs_get_zip_file(input_path+'/'+file,result) else: result.append(inp…
那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断: >>> from collections import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) #…
迭代器 # 迭代器:循环反馈的容器(集合类型)# -- 不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值​# 优点:不依赖索引,完成取值# 缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值) 可迭代对象 # 可迭代对象:内置有__iter__()方法的对象,称之为可迭代对象​# 可迭代对象:str | list | tuple | set | dict | range() | enumerate() | file | 生成器对象 迭代器对象 # 迭代器对象:内置有__n…
默认解压到当前目录 import shutil shutil.unpack_archive('/root/redis-3.2.3.tar.gz') 解压到home目录下 import shutil shutil.unpack_archive('/root/redis-3.2.3.tar.gz','/home/')…
一 普遍情况: x,y,z = 1,2,3 print("x:",x) # x:1 print("y:",y) # y:2 print("z:",z) # z:3 二 针对元祖: name = ("qiaobushi","wanglihong","leibushi") x,y,z = name print(name) print("x:",x) print("…
我们通常情况下都是正向遍历一个列表,下面是一种简单的反向遍历一个列表的方式. ## 正向遍历 >>>A = [9, 8, 7] >>>for index, a in enumerate(A): print(str(index) +' '+ str(a)) 0 9 1 8 2 7 ## 反向遍历 >>>for index, a in reversed(list(enumerate(A))): print(str(index) +' '+ str(a))…
一.序列解包 序列解包(或可迭代对象解包):解包就是从序列中取出其中的元素的过程,将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中. 一般情况下要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常.但如果要解包序列元素个数与左边变量数不同的情况下,可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同,还可将带星号的变量放在任何位置.赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表.在变量和值的个数相同…
 content: 1.什么是迭代协议 2. 什么是迭代器(Iterator)和可迭代对象(Iterable) 3. 使用迭代器和可迭代对象 4. 创建迭代器和可迭代对象 5. 迭代器设计模式   一. 什么是迭代协议 之前我们就提到,python中的魔法函数,相当于其对应的协议,如果实现了某种魔法函数,我们可以认为这个类遵循了某种协议,有了某种特定的特质. 在python中遵循了迭代协议的有两个概念,一个是Iterable(可迭代类型),一个是iterator(迭代器). 看Iterable和…