Python:列表类型
概念
列表:有序的,可变的,元素集合
因为列表和字符串都是序列类型,所以很多操作和字符串很相似
但是注意:列表是可变类型,字符串是不可变类型
定义
基本定义
定义方法:[ 元素1, 元素2, ...... ]
列表中的元素是任意的,写什么都可以,也可以是另一个列表
可以定义一个空列表:[]
列表生成式
range(stop):生成 [0, 1, 2, ...., stop-1]
range(start, stop[, step]):生成 [start, start+step, start+2*step, ...... ]
,元素都小于stop
在python2中,range直接返回一个列表,而在python3中,range是一个生成器
使用生成器的原因:为了防止生成的列表会很大,而且可能不会被立即使用
列表推导式
[表达式 for x in xxx]
[表达式 for x in xxx if 条件]
[表达式 for x in xxx for y in yyy]
......
列表常用操作
增加
append
向列表中,追加一个新的元素,在列表的最后
语法:l.append(x)
会直接修改原列表,返回值为None
insert
在列表指定位置追加一个新的元素
在指定索引的前面
语法:l.insert(index, obj)
会直接修改原列表
extend
给列表扩展另外一个可迭代序列
语法:l.extend(iterable)
会直接修改原列表
乘法操作
l * n
:列表l,内容重复n次
不修改原列表
加法操作
l1 + l2
:组合l1和l2
不修改原列表
删除
del 语句
del 语句可以删除一个指定的元素
(del不止可以用于列表,也可以用于普通变量)
del可以删除整个列表,也可以删除某个元素
pop
移除并返回列表中指定索引对应元素
语法:l.pop(index=-1)
返回被移除的元素
remove
移除列表中的指定元素
语法:l.remove(obj)
参数 obj:需要被移除的元素
注意:
- 会直接修改原列表
- 如果元素不存在,会报错
- 如果存在多个元素,则只会删除最左边的一个
- 注意,在循环中删除列表元素,有时候会有坑
修改
l[index] = xxx
查找
索引
l[index]
获取元素索引
l.index(obj)
从左到右进行查找
获取指定元素个数
l.count(obj)
获取多个元素,切片
见字符串操作方法,注意列表是可变的
遍历
通过元素进行遍历
for x in l:
......
通过索引进行遍历
for index in range(len(l) + 1):
......
通过枚举进行遍历
枚举对象:通过枚举函数,生成一个新的对象
函数用于将一个可遍历的对象,组合为一个索引序列,同时列出数据下标和数据
语法:enumerate(sequence, [start=0])
- sequence:一个序列,迭代器,或者其他支持迭代的对象
- start:起始位置下标
返回的形式:[(0, obj0), (1, obj1), ......]
for t in enumerate(l):
......
也可以使用元组的解包
for idx, obj in enumerate(l):
......
通过迭代器进行遍历
简单了解一下迭代器!
什么是迭代:访问可迭代元素的一种方式,也就是可以按照顺序访问每一项
可迭代对象:能够被迭代的对象称为可迭代对象
判断依据:能作用域for in
判定方法:
import collections
isinstance(obj, collections.Iterable)
迭代器:
- 是可以记录遍历位置的对象
- 从第一个元素开始,往后通过next()函数进行遍历
- 只能往后,不能向前
- 判定依据:能作用于next函数,next(obj)
- 判定方法:
import collections
isinstance(obj, collections.Iterator)
- 注意:迭代器也是可迭代对象,所以也可以作用于for in
iter:根据一个可迭代对象返回一个迭代器
为什么会产生迭代器
- 仅仅在迭代到某个元素时才处理该元素
- 在此之前,元素可以不存在
- 在此之后,元素可以被销毁
- 特别适合用于遍历一些巨大的或者是无限的集合
- 提供了一个统一的访问集合的接口
- 可以把所有的可迭代对象,转换成迭代器进行使用
迭代器的简单使用
- 使用next()函数,从迭代器中取出下一个对象,从第一个元素开始
- 因为迭代器比较常用,所以在python中,可以直接作用于 for in
- 内部会自动调用迭代器对象,next
- 会自动处理迭代完毕的错误
注意
- 如果取出完毕,再继续取,则会报错:
StopIteration
- 迭代器一般不能多次迭代
判定
列表也是序列类型
in 和 not in,同样可以用于列表
用来判断元素是否存在于列表之中
比较
内建函数:cmp()
如果比较的是列表,则针对每个元素,从左到右逐一比较
- 左 > 右 1
- 左 == 右 0
- 左 < 右 -1
在python3中不支持这种方式
比较运算符
==
<
>
。。。。。
针对每个元素,从左到右逐一比较
排序
内建函数:sort()
可以对所有可迭代对象进行排序
语法:sorted(iterable, key=None,reverse=False)
参数:
- iterable:可迭代对象
- key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值
- reverse:控制升序降序,默认False,升序
返回值:一个已经排好序的 列表
列表方法 list.sort
语法:list.sort(key=None, reverse=False)
参数:
- key:排序关键字,值为一个函数,此函数只有一个参数并且返回一个值用来比较
- reverse:控制升序降序,默认False,升序
乱序
随机打乱一个列表
import random
...
random.shuffle(l)
反转
l.reverse()
l[::-1]
Python:列表类型的更多相关文章
- Python列表类型及常用操作
Python列表类型 1.用途: 存放多个值,可以根据索引存取值 2.定义方式: 在[ ]内用逗号分割开多个任意类型的值 l=['yven','law','lyf'] #l=list(['yven', ...
- python列表类型
列表类型简介 列表类型是一个容器,它里面可以存放任意数量.任意类型的数据. 例如下面的几个列表中,有存储数值的.字符串的.内嵌列表的.不仅如此,还可以存储其他任意类型. >>> L ...
- python列表类型中的陷阱
在python中对列表使用重复运算符*进行操作时,只是简单的进行了浅复制,内部的结构并没有复制过来,所以下面的例子结果是这样的: >>> lists =[[]]*3 >> ...
- python容器类型:列表,字典,集合等
容器的概念我是从C++的STL中学到的 什么是容器? 容器是用来存储和组织其他对象的对象. 也就是说容器里面可以放很多东西,这些东西可以是字符串,可以是整数,可以是自定义类型,然后把这些东西有组织的存 ...
- Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- Python基础(3) - 数据类型:3列表类型
Python 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等.列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改.删除等操作.列表用[]包括起来的. 列 ...
- python全栈开发_day5_字符串及列表类型
一:字符串 1)优先掌握知识点. a=" 21j3:b12jk:b3j12:3bjk12 " #内置方法之strip print(a.strip(" ")) # ...
- python基础——4(数字、字符串、列表类型的内置方法介绍)
目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...
- 005 python 整数类型/字符串类型/列表类型/可变/不可变
可变/不可变类型 可变类型 ID不变的情况下,值改变,则称之为可变类型,如列表,字典 不可变类型 值改变,ID改变,则称之为不可变类型,如 整数 字符串,元组 整数类型 int 正整数 用途就是记录年 ...
- Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
随机推荐
- Python入门1 —— 初识Python
一:Python介绍 1.Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2.为什么要跟计算机沟 ...
- 19年7月份面试7家公司,整理的java面试题(答案自行百度解决,也是个学习的过程)
Dubbo与注册中心Zookeeper了解多少ConcurrentHashMap的原理 集合 HashMap 和 HashTable和ConcurrentHashMap的原理以及区别HashMap初始 ...
- bzoj 2049: [Sdoi]Cave 洞穴探测 (LCT)
第一次写lct (这是一道lct裸题 这次没有可爱(划掉)的同学教我,虽然有模板,但是配合网上的讲解还是看不懂QAQ 然后做了几道题之后总算有些感觉辣 于是决定给自己挖个坑,近期写一个lct详解(不过 ...
- Python记:列表和元组之序列相加
_______________坐而论道,不如起而行之! 序列乘法运算示例:
- 题解 P5530 [BalticOI 2002]双调路径
P5530 [BalticOI 2002]双调路径 输入样例: 4 5 1 4 2 1 2 1 3 4 3 1 2 3 1 2 3 1 1 4 2 4 2 4 样例如下图 样例说明: 从1到4有4条路 ...
- 面试题17.打印从1到最大的n位数
void print_n_number(int n){ if(n<=0){ cout<<"fuckyou"; return; } string s="1 ...
- 将 master 节点服务器从 k8s 集群中移除并重新加入
背景 1 台 master 加入集群后发现忘了修改主机名,而在 k8s 集群中修改节点主机名非常麻烦,不如将 master 退出集群改名并重新加入集群(前提是用的是高可用集群). 操作步骤 ssh 登 ...
- 解决安装mysql时出现的三种问题
MySQL v5.0.96 for windows 安装版 链接:http://pan.baidu.com/s/1slmE2k9 密码:tadp MySQLAdministratort ...
- PHP 操作oracle数据库,select,insert into ,delete,update等
建完数据库,下面就是操作数据库啦 程序的根源无非是增删改查 首先最基础的查询 public function obtainduo(){ header("content-type:text/h ...
- vuex中怎么直接获取state中的值,以及computed的使用注意
1,直接用$store对象获取store对象,再进一步获取state属性..... 2, 3,computed computed是计算属性,他不可以直把值直接存入data中,因此不能像data一样直接 ...