「Python实践」学习之路
一、列表内容对比
方式一:
import operator
l1 = ['a','b','c']
l2 = ['a','d','e']
print(operator.lt(l1,l2))
运行结果为True
方式二:
l1 = ['a','b','c']
l2 = ['a','d','e']
s1 = set(l1)
s2 = set(l2)
# s1&s2 #列表相同部分
if s1^s2:
print(s1^s2)
print('有不一样的')
else:
print('都一样')
运行结果:
{'d', 'b', 'e', 'c'}有不一样的
二、python中的[::-1]和sort()
1.原址排序
1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
1
2
3
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ] x.sort() print x # [1, 2, 4, 6, 7, 9] |
2.副本排序
1)[:]分片方法
1
2
3
4
5
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ] y = x[ : ] y.sort() print y #[1, 2, 4, 6, 7, 9] print x #[4, 6, 2, 1, 7, 9] |
注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。
2)sorted方法
sorted返回一个有序的副本,并且类型总是列表,如下:
1
2
3
4
|
x = [ 4 , 6 , 2 , 1 , 7 , 9 ] y = sorted (x) print y #[1, 2, 4, 6, 7, 9] print x #[4, 6, 2, 1, 7, 9] |
1
|
print sorted ( 'Python' ) #['P', 'h', 'n', 'o', 't', 'y'] |
3、高级用法
1.自定义cmp比较函数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def comp(x, y): if x < y: return 1 elif x > y: return - 1 else : return 0 nums = [ 3 , 2 , 8 , 0 , 1 ] nums.sort(comp) print nums # 降序排序[8, 3, 2, 1, 0] nums.sort( cmp ) # 调用内建函数cmp ,升序排序 print nums # 降序排序[0, 1, 2, 3, 8] |
2.自定义key和reverse
1.reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。
2.key在使用时必须提供一个排序过程总调用的函数:
1
2
3
4
5
|
alist = [( '2' , '3' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '5' , '10' ), ( '2' , '4' , '10' )] # 多级排序,先按照第3个元素排序,然后按照第2个元素排序: print sorted (alist, cmp = None , key = lambda x:( int (x[ 2 ]), int (x[ 1 ])), reverse = False ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' )] |
4、operator.itemgetter函数
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。
1
2
3
4
5
6
7
|
a = [ 1 , 2 , 3 ] >>> b = operator.itemgetter( 1 ) / / 定义函数b,获取对象的第 1 个域的值 >>> b(a) 2 >>> b = operator.itemgetter( 1 , 0 ) / / 定义函数b,获取对象的第 1 个域和第 0 个的值 >>> b(a) ( 2 , 1 ) |
要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
itemgetter在sort中的用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from operator import itemgetter alist = [( '2' , '3' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '5' , '10' ), ( '2' , '4' , '10' )] # 多级排序,先按照第3个元素排序,然后按照第2个元素排序: print sorted (alist, cmp = None , key = itemgetter( 2 , 1 ), reverse = False ) print sorted (alist, cmp = None , key = lambda x:itemgetter( 2 , 1 )(x), reverse = False ) print sorted (alist, cmp = None , key = lambda x: map ( int , itemgetter( 2 , 1 )(x)), reverse = False ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' )] [( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' ), ( '1' , '2' , '3' ), ( '5' , '6' , '7' )] [( '1' , '2' , '3' ), ( '5' , '6' , '7' ), ( '2' , '3' , '10' ), ( '2' , '4' , '10' ), ( '2' , '5' , '10' )] |
[::]用法
a = [0,1,2,3,4,5,6,7,8,9]
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了
b = a[i:j:s]这种格式呢,i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东。
三、group()正则表达式
正则表达式中,group()用来提出分组截获的字符串,()用来分组
1
2
3
4
5
6
|
import re a = "123abc456" print re.search( "([0-9]*)([a-z]*)([0-9]*)" ,a).group( 0 ) #123abc456,返回整体 print re.search( "([0-9]*)([a-z]*)([0-9]*)" ,a).group( 1 ) #123 print re.search( "([0-9]*)([a-z]*)([0-9]*)" ,a).group( 2 ) #abc print re.search( "([0-9]*)([a-z]*)([0-9]*)" ,a).group( 3 ) #456 |
「Python实践」学习之路的更多相关文章
- Note -「Lagrange 插值」学习笔记
目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...
- Note -「动态 DP」学习笔记
目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...
- Note -「单位根反演」学习笔记
\(\mathcal{Preface}\) 单位根反演,顾名思义就是用单位根变换一类式子的形式.有关单位根的基本概念可见我的这篇博客. \(\mathcal{Formula}\) 单位根反演的 ...
- 「Django」学习之路,持续更改
一.setting设置 1.设置 局域网可以部署连接 ALLOWED_HOSTS = ['*.besttome.com','192.168.1.100'] 2.static配置 STATIC_URL ...
- 「Python 编程」编码实现网络请求库中的 URL 解析器
摘要:怎么写出更短的代码并不是这次要讨论的话题.今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSock ...
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- python 零基础学习之路 02-python入门
不知不觉学习python已经两个月了,从一开始不知道如何对print的格式化,到现在可以手撸orm,这期间真的是 一个神奇的过程.为了巩固自己的基础知识,为后面的拓展埋下更好的伏笔,此文当以导师的博客 ...
- python数据科学 学习之路
week1 - Python基础1 介绍.基本语法.流程控制 week1- Python基础2 列表.字典.集合 week1- Python基础3 函数.递归.内置函数 week1- Pyt ...
- 一个python小白的学习之路
本人是个网管,在佛山工作,现在已经学习了一段时间python了,还是学开基础,但近段时间有一点的突破出来了,找到了一个很好的自学视频,等自己有能力了就想找一个特训班试试.已经看了视频两个星期了,有小小 ...
随机推荐
- Centos7 Zabbix监控部署
Zabbix监控 官方文档 https://www.zabbix.com/documentation/3.4/zh/manual https://www.zabbix.com/documentatio ...
- LCA最近公共祖先(Tarjan离线算法)
这篇博客对Tarjan算法的原理和过程模拟的很详细. 转载大佬的博客https://www.cnblogs.com/JVxie/p/4854719.html 第二次更新,之前转载的博客虽然胜在详细,但 ...
- Hadoop环境搭建01
根据马士兵老师的Hadoop进行的配置 1.首先列下来需要用到的软件 VirtulBox虚拟机.Centos7系统镜像.xshell.xftp.jdk安装包.hadoop-2.7.0安装包 2.在Vi ...
- 第11章 认识和学习bash
认识bash这个shell 硬件.内核和shell 用户操作计算机流程如下: 用户——>用户界面(shell,KDE,application)——>核心(kernel)——>硬件(h ...
- PHP初级
通过form get post表单提交的数据,数据内容由用户填写或选择而得到!
- asp.net 中使用 pagedlist 分页并具有查询功能的实现方法
用pagedlist在项目中做分页已N次了,今天再次用实例来实现一个带查询功能的分页例子. 1.在view代码: @using PagedList.Mvc@model BGZS.Models.User ...
- HDU4802_GPA
水题. #include <iostream> #include <cstdio> #include <cstring> using namespace std; ...
- 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra
题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...
- Android四大组件之Service(续)
本地服务启动和通过广播的方式回调是非常简单的. 下面介绍远程服务和通过远程回调的方式通知activity的方式. 1.service定义: package com.joyfulmath.globals ...
- Infinity NaN undefined和null
Infinity属性用于存放表示正无穷大的数值. 负无穷大是表示负无穷大一个数字值. 该属性为Global对象的一个只读属性, 所有主流浏览器均支持该属性. Infinity属性的值为Number类型 ...