python序列

python序列

列表

python变量不存放值,之存放值的引用,所以列表中元素可以是不同类型

1.常用方法

1.1 增加元素

  • append,在末尾插入元素

  • extend,将一个列表整体插入到尾部

  • insert,将某个元素插入到特定位

  • +/*,拼合或拼合多个元素,该操作不是原地操作,会创建新地址

  • 上三个都是原地操作,在源地址上增删查改,最后两个会新开辟一个地址

1.2 删除元素

  • del,删除对象,用在所有对象上,删除的元素会在合适时间被回收,可以gc.collect()立即回收
  • remove,从列表里移除某个值与特定值相等的元素
  • pop,从列表里移除某个特定位置的元素,并返回该元素
  • clear,清空列表中所有元素,但保留列表自身对象

1.3 排序

  • sort:按指定规则对元素排序,默认规则是比较元素大小

  • reverse:按制定规则逆序排序

  • sorted:sort异地排序

  • reversed:reverse异地排序

  • 前两个在原来基础上排,后两个返回新对象

1.4 查找

  • count
  • index:返回元素在列表中首次出现的位置

1.5其他

  • zip:将多个列表中的元素重新组合为元组,并返回包含这些元组的zip对象
  • enumerate:返回包含下标和值的迭代对象,可用来判断一个对象是否是迭代对象
  • map():将一个函数依次作用到序列或迭代器对象的每个元素上,并返回map对象
  • reduce():接受两个函数的参数,并从左到右把这两个函数依次作用在迭代对象的每个元素上,在functools标准库中
>>> a=[1,2,3,4]
>>> b=[5,6,7]
>>> ab=zip(a,b)
>>> ab
<zip object at 0x0000028A50A61608>
>>> list(ab)
[(1, 5), (2, 6), (3, 7)]
>>> en=enumerate(a)
>>> en
<enumerate object at 0x0000028A50A6BC60>
>>> list(en)
[(0, 1), (1, 2), (2, 3), (3, 4)]
>>>

zip两个列表的元素个数不同时以短的为准,里面的参数是可迭代对象

map:

>>> def fun(a):return a+5>>> a=map(fun,range(5))
>>> a
<map object at 0x0000019F517923C8>
>>> list(a)
[5, 6, 7, 8, 9]
>>>

也可以是多参数函数,返回的map对象中的所有元素都是经过函数处理过后的,但map不会对迭代对象做修改

>>> z=zip(a,range(10))
>>> z
<zip object at 0x0000028A50A08748>
>>> list(z)
[(1, 0), (2, 1), (3, 2), (4, 3)]
>>> z=zip(a,"1"*11)
>>> list(z)
[(1, '1'), (2, '1'), (3, '1'), (4, '1')]

2. 列表推导式

[表达式 for 变量 in 序列或迭代对象]

可以嵌套多重循环,也可以使用判断

例:

j=[1,3,2]
ss=[s*2 for s in j]
print(ss)# 输出:[2, 6, 4]
  • 使用推导式平铺嵌套列表
a=[[a for a in range(3)]]*3
print(a)
s=[j for i in a for j in i]
print(s)# 输出
# [[0, 1, 2], [0, 1, 2], [0, 1, 2]]
# [0, 1, 2, 0, 1, 2, 0, 1, 2]
  • 写一个列表生成式,产生一个公差为11的等差数列
    def 等差数列(self,begin,num):l=[begin+11*a for a in range(num) ]print(l)
  • 在一个字典中找出最大值
    def 成绩最好(self):dir={'zhangsan':95,'lisi':59,'wangwu':78,'zhaoliu':87,'xiaohua':100}max_score=max(dir.values())max_name=[max_name for max_name in dir if dir[max_name]==max_score]print(max_name)
  • 矩阵转置
 def 矩阵转置(self):l=[[1,2,3],[4,5,6],[7,8,9]]s=[[r[i] for r in l] for i in range(3)]print(s)

3. 切片

由两个冒号,三个数字组成,三个数字分别是起始,终止,步长,切片可以用在列表,元组,字符串等上

使用切片可以实现浅复制,修改值等操作。

元组

元组不能修改,比较安全,访问速度比列表快(tuple)

1.生成器推导式

(表达式 for 变量 in 迭代器)

生成器推导式形式与列表推导式类似,但生成器推导式返回一个生成器对象,生成器对象用完即销毁,生成器对象需要转换成列表或元组等数据类型才能使用,也可以通过生成器对象的__next__属性访问,生成器对象具有惰性求值的特点,只在需要的时候才返回元素,因此比列表推导式效率高,适合大量数据的遍历。

>>> s=(a for a in range(5))
>>> s
<generator object <genexpr> at 0x00000135FDE62C00>
>>> list(s)
[0, 1, 2, 3, 4]
>>> list(s)
[]
>>> s=(a for a in range(5))
>>> tuple(s)
(0, 1, 2, 3, 4)
>>>

字典

字典是一种无序可变序列,键是不可变类型,值是可变类型,字典访问速度也比列表快

1.常用方法

  • dict :创建字典
  • update: 将一个字典添加到另一个字典中
  • pop:删除,并返回给定键对应的值
  • popitem:随机弹出一个元素,返回元素
  • del
  • clear
  • copy
  • setdefault:查询字典中的元素,不存在就添加一个
  • get:查询,不存在允许输出特定值
  • items:返回字典中的元素
  • key:返回键的列表
  • value:返回值的列表
>>> key=['name','id']
>>> value=['zhangsan',11]
>>> s=dict(zip(key,value))
>>> s
{'name': 'zhangsan', 'id': 11}
>>> s2={'sex':'boy'}
>>> s.update(s2)
>>> s
{'name': 'zhangsan', 'id': 11, 'sex': 'boy'}
>>> s.pop
<built-in method pop of dict object at 0x00000135FDE0F288>
>>> s.pop('name')
'zhangsan'
>>> s
{'id': 11, 'sex': 'boy'}
>>> s.popitem()
('sex', 'boy')
>>> s
{'id': 11}
>>> s.get('name','No This Key')
'No This Key'
>>> s.setdefault('name','No This Key')
'No This Key'
>>> s
{'id': 11, 'name': 'No This Key'}

集合

集合只支持元组等可哈希数据,列表,字典等可变类型不能成为集合中的元素,可以使用函数hash()判断是否是可哈希数据,字典和集合使用哈希表存储数据,所以操作速度高于列表等。(set)

1.集合操作

  • add()
  • update()
  • pop():随即删除并返回一个元素,不存在抛出异常
  • remove():删除一个特点元素,元素不存在抛出异常
  • discard():删除一个特定元素,不存在就忽视该操作
  • clear():删除几何中所有元素
>>> s={1,2,3,4,5}
>>> s.pop()
1
>>> s
{2, 3, 4, 5}
>>> s.remove(0)
Traceback (most recent call last):File "<pyshell#53>", line 1, in <module>s.remove(0)
KeyError: 0
>>> s.remove(2)
>>> s
{3, 4, 5}
>>> s.discard(0)
>>> s
{3, 4, 5}
>>>

2.集合运算

  • 交:&
  • 并:|
  • 差:-
  • 对称差:^
  • 比较:> < <= >= 用来判断并包关系,不是比较大小

3. 集合推导式

{表达式 for 变量 in 迭代器}

如:

>>> import random
>>> s={random.randint(1,500) for i in range(20)}
>>> s
{1, 387, 268, 411, 293, 167, 48, 53, 441, 187, 191, 195, 324, 465, 473, 474, 481, 362, 114, 123}
>>> len(s)
20
>>> s={random.randint(1,5) for i in range(20)}
>>> s
{1, 2, 3, 4, 5}
>>>

集合不允许元素重复,所以可以利用这一特性实现去重。

序列解包

>>> x,y,z=1,2,3
>>> p=(2,3,4)
>>> (x,y,z)=p
>>> p
(2, 3, 4)
>>> p=map(str,range(3))
>>> p
<map object at 0x000001BB8B842320>
>>> list(p)
['0', '1', '2']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端资源(11)

移动端API 地址99移动端知识集合 https://github.com/jtyjty99999/mobileTech移动端前端开发知识库 https://github.com/AlloyTeam/Mars移动前端的一些坑和解决方法&#xff08;外观表现&#xff09; http://caibaojian.com/mobile-web-bug.html【原】移动web资源整理 http://w…

win10使用Composer-Setup安装Composer以及使用Composer安装Yii2最新版

1&#xff1a;下载 ca-bundle.crt和cacert.pem(见导航栏——文件) 将这两个文件放在php目录下 2:php.ini中添加上述两个文件的路径 curl.cainfoC:/xampp/php/ca-bundle.crtopenssl.cafileC:/xampp/php/ca-bundle.crt 写到最后一行就可以 3&#xff1a;下载Composer-Setup.exe h…

python离群点检测方法分几类_数据分析 第五篇:离群点检测

离群点(outlier)是指和其他观测点偏离非常大的数据点&#xff0c;离群点是异常的数据点&#xff0c;但是不一定是错误的数据点。确定离群点对于数据分析会带来不利的影响&#xff0c;比如&#xff0c;增大错误方差、影响预测和影响正态性。从散点图上可以直观地看到离群点&…

计算机网络TCP/IP

TCP/IP原理 看《图解TCP/IP》时做的笔记&#xff0c;记录一些感觉重要的东西…还没完&#xff0c;正在学&#xff0c;慢慢写 1.计算机网络的发展 2.OSI参考模型 3.传输方式分类 4.地址及网络的构成 5.TCP/IP协议的出现 6.TCP/IP分层模型及通信示例 7.数据链路层1 8.数…

hive求差集和交集

2019独角兽企业重金招聘Python工程师标准>>> 用的要求总数和统计数&#xff1a; 总数的概念是利用安卓ID&#xff0c;就以为这把两个月前的安卓ID统统的统计一遍&#xff0c;如果没有出现&#xff0c;恰好在今天出现了&#xff0c;那么当前的这个用户就是新增的…

python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...

这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下dt{}class Denglu:def register(self,name,psd):if name.isalnum() and psd.isalnum():i…

渐变色--浏览器兼容性

说明&#xff1a; 1.360兼容模式效果不好 2.可以直接用不同浏览器打开这个页面查看效果 <!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title> <style> body{ …

如何学习前端 转载

作者&#xff1a;小不了链接&#xff1a;https://zhuanlan.zhihu.com/p/23265155来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 鉴于时不时&#xff0c;有同学私信问我&#xff08;老姚&#xff0c;下同&#xff09;怎…

tcp前4字节消息长度_网络基础篇之TCP

​网络分层什么是 TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。- 面向连接&#xff1a;通过三次握手建立一对一的连接&#xff08; UDP 协议 可以一个主机同时向多个主机发送消息&#xff0c;即一对多&#xff09;&#xff1b;- 可靠的&#xff1a;通过序号、校…

使用Servlet实现用户注册

1、用户注册页面代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年轻人的第一篇V语言笔记

V语言极限学习 我听说V语言看文档半小时就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小时掌握不了我就给各位科普一下广告法&#xff1f;&#xff1f;&#xff1f; 宇宙惯例hello world // first v code fn main(){printIn("hello world…

android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

你现在开发android,ios,小程序用什么工具&#xff0c;怎么开发的&#xff1f;还在单个端的开发吗&#xff1f;今天我们主要讨论的是一次开发多端使用的技术&#xff0c;也是这两年比较流行的开发方向。现在的终端太多了&#xff0c;app两个端android和ios,小程序有微信&#xf…

Android SDK上手指南:应用程序数据

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程当中&#xff0c;我们将学习如何从零开始进行Android SDK开发。我们已经熟悉了Android应用程序的结构与基本组成元素&#xff0c;…

设计微服务架构需要解决的问题

问题&#xff1a; 划分服务的原则是什么服务之间选择何种轻量级的通信协议如何做到服务的独立部署如何确定使用何种编程语言?控制多语言带来的复杂度如何做到服务的去中心化如何解决大量微服务引入的运维成本转载于:https://www.cnblogs.com/fight-tao/p/5641286.html

Django Model设计详解

Django Model 设计 Django Model设计是Django五项基础核心设计之一&#xff08;Model设计&#xff0c;URL配置&#xff0c;View编写&#xff0c;Template设计&#xff0c;From使用&#xff09;&#xff0c;也是MVC模式中重要的环节。 如果图片无法访问&#xff0c;大家可以移…

python设置全局变量失败_Python全局变量与global关键字常见错误解决方案

在Python的变量使用中&#xff0c;经常会遇到这样的错误:local variable a referenced before assignment它的意思是&#xff1a;局部变量“a”在赋值前就被引用了。比如运行下面的代码就会出现这样的问题&#xff1a;a 3def Fuc():print (a)a a 1Fuc()​ 但是如果把 a a …

Atititi tesseract使用总结

Atititi tesseract使用总结 消除bug&#xff0c;优化&#xff0c;重新发布。当前版本为3.02 项目下载地址为&#xff1a;http://code.google.com/p/tesseract-ocr。 Windows cmd命令行使用Tesseract-OCR引擎识别验证码: 1、下载安装Tesseract-OCR引擎(3.0版本才支持中文识别) t…

Javascipt数组去重的几种方式

方法一 function unique(arr) {var retArr [];for (var i 0; i < arr.length; i) {(retArr.indexOf(arr[i]) -1) && retArr.push(arr[i]);}return retArr; } 方法二 function unique(arr) {return arr.filter(function(item, index, array) {return array.indexO…

01_JS语法

JS语法 严格区分大小写以;结尾&#xff0c;不写浏览器会自动加&#xff0c;但不准确&#xff0c;且会占用浏览器资源自动忽略多个空格和换行 写在哪 所有JS代码都必须依托网页运行 内嵌 写在html的script标签中 <script>// JS代码 </script>事件 写在某个ht…

pythonwhile循环love_python基础之while循环及编码

while 条件&#xff1a;循环体死循环&#xff1a;没有终止条件(修改方法&#xff1a;1.改变条件2.使用break)break 终止当前循环contiune&#xff1a;跳出本次循环&#xff0c;继续下次循环break和contione必须在循环体里while 条件&#xff1a;循环体else&#xff1a;结果当wh…