python 列表与元组的操作简介

原文:https://www.cnblogs.com/QG-whz/p/4782809.html

阅读目录

正文

上一篇:Python 序列通用操作介绍

列表

列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的。接下来讨论一下列表所提供的方法。

list函数

可以使用list函数来创建列表:

  1. list('Hello')
  2. ['H', 'e', 'l', 'l', 'o']

列表的基本操作

Python 序列通用操作介绍中提及的操作全部适用于列表,例如索引、分片、连接、乘法等。而且由于列表是可以修改的,所以多了一些元素赋值、元素删除、分片赋值的方法。

改变列表元素的值

  1. >>>
  2. >>> a=list('ooooo')
  3. >>> a[2]='A'
  4. >>> a
  5. ['o', 'o', 'A', 'o', 'o']
  6. >>>

删除列表元素

使用del对列表元素进行删除:

  1. >>> a
  2. ['o', 'o', 'A', 'o', 'o']
  3. >>> del a[2]
  4. >>> a
  5. ['o', 'o', 'o', 'o']
  6. >>> len(a)
  7. 4

删除之后,列表的长度也变成了4.关于del语句的使用后续介绍。

分片赋值

使用分片赋值可以同时改变一个范围内的字符:

  1. >>>
  2. >>> str1= list('abcdef')
  3. >>> str1
  4. ['a', 'b', 'c', 'd', 'e', 'f']
  5. >>> str1[3:]=list('abc')
  6. >>> str1
  7. ['a', 'b', 'c', 'a', 'b', 'c']
  8. >>>

不止如此,分片赋值更强大的功能是使用长度不等的序列替换分片:


  1. #长序列替换短分片
  2. >>> str2=list('ppp')
  3. >>> str2
  4. ['p', 'p', 'p']
  5. >>> str2[1:]=('ython')
  6. >>> str2
  7. ['p', 'y', 't', 'h', 'o', 'n']
  8. >>>
  1. >>>#短序列替换长分片
  2. >>> str2= list('abcdefg')
  3. >>> str2
  4. ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  5. >>> str2[1:]= list('bc')
  6. >>> str2
  7. ['a', 'b', 'c']
  8. >>>

利用分片操作,我们可以实现序列的插入操作---插入不过是替换掉某段“空”分片:

  1. >>> str3=[1,5]
  2. >>> str3[1:1]=[2,3,4]
  3. >>> str3
  4. [1, 2, 3, 4, 5]
  5. >>>

列表方法

方法与函数关系密切。方法本身就是函数,只不过这函数是和对象结合在一起的,通过对象来调用方法。面向对象语言中这些方法可称为接口。方法调用的语法为:

对象.方法(参数)

接下来我们就来看看列表这种类型的对象提供了什么方法(接口)。

append

功能:用于在列表末尾追加新的元素

  1. >>> lst=[1,2,3]
  2. >>> lst.append(4)
  3. >>> lst
  4. [1, 2, 3, 4]
  5. >>>

count

功能:用于统计某个元素在列表中出现的次数

  1. >>> [1,2,3,4,5,2,3,1,2,3,42,1,2,3,5].count(1)
  2. 3
  3. >>>

extend

功能:在列表末尾一次性追加另一个序列中的多个值

  1. >>>
  2. >>> a=[1,2,3]
  3. >>> b=[4,5,6]
  4. >>> a.extend(b)
  5. >>> a
  6. [1, 2, 3, 4, 5, 6]
  7. >>>

index

功能:用于从列表中找出某个值第一个匹配项的索引位置

  1. >>> a=['Me','and','my','broken']
  2. >>> a.index('my')
  3. 2
  4. >>>

insert

功能:用于将对象插入到列表中对应位置

  1. >>>
  2. >>> number=[1,2,3,4,5]
  3. >>> number.insert(3,'hello')
  4. >>> number
  5. [1, 2, 3, 'hello', 4, 5]
  6. >>> number.insert(3,6)
  7. >>> number
  8. [1, 2, 3, 6, 'hello', 4, 5]
  9. >>>

pop

功能:该方法从列表中弹出一个元素,默认是最后一个。并且返回弹出的元素

  1. >>>
  2. >>> number=[1,2,3,4,5,6,7,8]
  3. >>> a = number.pop()
  4. >>> a
  5. 8
  6. >>> number
  7. [1, 2, 3, 4, 5, 6, 7]
  8. >>>

利用append(从末尾添加一个元素)方法,我们可以来实现一种常见的数据结构--栈。

当然,POP方法可以从序列中弹出任意位置的元素:

  1. >>>
  2. >>> number
  3. [1, 2, 3, 4, 5, 6, 7]
  4. >>> number.pop(3)
  5. 4
  6. >>> number
  7. [1, 2, 3, 5, 6, 7]
  8. >>>

remove

功能:从列表中移除某个值的第一个匹配项。与pop不同的是,该方法并不返回移除的元素。

  1. >>> str4 = list('hello')
  2. >>> str4
  3. ['h', 'e', 'l', 'l', 'o']
  4. >>> str4.remove('l')
  5. >>> str4
  6. ['h', 'e', 'l', 'o']
  7. >>>

reverse

功能:该方法对序列方向存放

  1. >>>
  2. >>> number
  3. [1, 2, 3, 5, 6, 7]
  4. >>> number.reverse()
  5. >>> number
  6. [7, 6, 5, 3, 2, 1]
  7. >>>

注意该方法改变了列表但是没有返回值。

如果需要对一个序列进行反向迭代,可以使用reversed函数。这个函数并不返回一个列表,而是返回一个迭代器对象,可以使用list把迭代器对象转换成列表:

  1. >>>
  2. >>> number
  3. [7, 6, 5, 3, 2, 1]
  4. >>> number = list(reversed(number))
  5. >>> number
  6. [1, 2, 3, 5, 6, 7]
  7. >>>

sort

功能:用于在原位置度列表进行排序。 在原位置意味着列表会被修改。

  1. >>> number
  2. [1, 4, 3, 7, 4, 8, 3, 2, 7, 9]
  3. >>> number.sort()
  4. >>> number
  5. [1, 2, 3, 3, 4, 4, 7, 7, 8, 9]
  6. >>>

应注意的是,sort()方法的返回值并不是序列本身,而是None。

如何保存原序列顺序而进行排序?

  • 方法一
  1. >>>
  2. >>> x = [3,5,7,3,1,2,4]
  3. >>> y =x[:]
  4. >>> y.sort()
  5. >>> x
  6. [3, 5, 7, 3, 1, 2, 4]
  7. >>> y
  8. [1, 2, 3, 3, 4, 5, 7]
  9. >>>

注意将列表x赋值给列表y时千万别使用直接赋值,否则y与x指向了相同的对象,对y的修改即是对x的修改:

  1. >>>
  2. >>> x
  3. [3, 5, 7, 3, 1, 2, 4]
  4. >>> y=x
  5. >>> y.sort()
  6. >>> x
  7. [1, 2, 3, 3, 4, 5, 7]
  8. >>> y
  9. [1, 2, 3, 3, 4, 5, 7]
  10. >>>
  • 方法二

当然,你也可以使用函数来进行排序。

函数:sorted().

功能:对任何序列进行排序,结果返回一个排好序的列表

  1. >>>
  2. >>> x=[3,5,2,1,7,4,8,9,3]
  3. >>> y=sorted(x)
  4. >>> x
  5. [3, 5, 2, 1, 7, 4, 8, 9, 3]
  6. >>> y
  7. [1, 2, 3, 3, 4, 5, 7, 8, 9]
  8. >>>

如何修改排序规则?

从上面的例子我们看到,sort方法的默认排序都是升序的。sort方法有两个可选的参数,可以通过它来修改排序规则:

  • key

key参数提供一个在排序过程中使用的函数,利用该函数来为列表中元素创造一个键(key),依据键来对列表元素(值)进行排序。

  1. >>>
  2. >>> str5= ['one','year','like','any','old','other','year']
  3. >>> #默认的排序依据字符串排序规则
  4. >>> str5.sort()
  5. >>> str5
  6. ['any', 'like', 'old', 'one', 'other', 'year', 'year']
  7. >>> #使用key参数来修改排序规则
  8. >>> #我们使用字符长度作为键来排序
  9. >>> str5.sort(key=len)
  10. >>> str5
  11. ['any', 'old', 'one', 'like', 'year', 'year', 'other']
  12. >>>
  • reverse

另一个参数reverse是个简单的bool值,用来指明是否要反向排序;

  1. >>>
  2. >>> num=[2,3,4,5,6,78,4,3,3,4,5,8,9]
  3. >>> num.sort()
  4. >>> num
  5. [2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 8, 9, 78]
  6. >>> num.sort(reverse=True)
  7. >>> num
  8. [78, 9, 8, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2]

借助参数key,我们可以定义自己的比较函数来自定义比较规则。函数的定义在后面进行介绍。

元组

元组与列表的区别就在于,元组是一种不可变序列。元组变量的赋值要在定义时就进行,这就像C语言中的const变量或是C++的引用,定义时赋值之后就不允许有修改。元组存在的意义是:

  • 元组在映射中可以作为键使用,因为要保证键的不变性。
  • 元组作为很多内置函数和方法的返回值存在。

tuple()函数

类比于列表的list()函数,元组有tuple()函数来返回元组。

  1. >>>
  2. >>> tul1= tuple('abcdef')
  3. >>> tul1
  4. ('a', 'b', 'c', 'd', 'e', 'f')
  5. >>>

元组语法

从tuple返回的元组我们看到,元组的语法是用圆括号(大部分时候是)括起来的、用逗号加以分隔的元素的集合。逗号在元组构成中十分重要:

  1. >>>
  2. >>> #这是一个数学数
  3. >>> (1)
  4. 1
  5. >>> #这是一个元组
  6. >>> (1,)
  7. (1,)
  8. >>>

一个更加明显的例子:

  1. >>>
  2. >>> a = 10*(1)
  3. >>> b = 10*(1,)
  4. >>> a
  5. 10
  6. >>> b
  7. (1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
  8. >>>

了解了逗号在元组构成的重要性后,我们来看如何定义各种元组

定义元组

定义空元组

  1. >>>
  2. >>> tul1=()
  3. >>> tul1
  4. ()
  5. >>>

定义只有一个元素的元组

  1. >>>
  2. >>> tul2=(1,)
  3. >>> tul2
  4. (1,)
  5. >>>

定义多个元素构成的元组类似于定义一个元素的元组,也可以使用tuple函数把其他序列转换为元组:

  1. >>>
  2. >>> a = [1,2,3,4,5,6]
  3. >>> b = tuple (a)
  4. >>> b
  5. (1, 2, 3, 4, 5, 6)
  6. >>>

元组操作

因为元组不可修改,与列表比较少了很多操作,比如attend、insert 等。而其他操作例如分片、索引操作等都类似于列表。故在使用元组时,时刻记住元组不可修改,自然就知道元组有哪些操作了。

(转)python 列表与元组的操作简介的更多相关文章

  1. python 列表与元组的操作简介

    上一篇:Python 序列通用操作介绍 列表 列表是可变的(mutable)--可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的.接下来讨论一下列表所提供的方法. list函数 可以 ...

  2. Python列表、元组、字典和字符串的常用函数

    Python列表.元组.字典和字符串的常用函数 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中 ...

  3. python列表与元组的用法

    python列表与元组的用法 目录: 列表的用法: 1.增   append   +    extend 2.删  del    remove 3.改   insert 4.查  index 5.反向 ...

  4. Python 列表、元组、字典及集合操作详解

    一.列表 列表是Python中最基本的数据结构,是最常用的Python数据类型,列表的数据项不需要具有相同的类型 列表是一种有序的集合,可以随时添加和删除其中的元素 列表的索引从0开始 1.创建列表 ...

  5. Python学习笔记 (3) :列表、元组的操作

    列表,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. >>> a = ['spam', 'eggs', 100, 1234] >>> a ...

  6. Python列表及元组操作

    #列表(一组有序数据的组合就是列表) #创建列表 #空列表 var = list()#var = [] print(var,type(var)) #具有多个元素的列表 var = ['风','水',' ...

  7. python列表、元组、字典、集合的简单操作

    一.列表.元组 1.常用操作函数 #Author:CGQ import copy #列表 ''' names=["ZhangYang","XiaoHei",&q ...

  8. python中关于元组的操作

    元组的基本操作:1.创建一个元组: tuple=(1,26); tuple1=(","sy"); 创建一个空元组: tuple=(); 元组中只包含一个元素时,需要在元素 ...

  9. 认识Python 列表和元组

    列表用方括号   l=[['xyz',123], 'abc', 3140000000.0, (23+1.3j), 'ddd'] 元组用圆括号   t=(['xyz', 123],'abc', 3140 ...

随机推荐

  1. CodeForces 141C Queue (构造)

    题意:n 个人在排队,然后给出每个人的前面比他身高高的人的数量hi,让你给出一种排列,并给出一种解. 析:首先,hi 小的要在前面,所以先进行排序,然后第一个人的 h1 必须为0,我们可以令身高为 1 ...

  2. 【Java】Strategy Pattern

    前言 如果说,商场打折针对不同的时节,比如双十一.圣诞节.春节这些值得促销的好日子,进行不同程度的降价打折从而获得最大程度上的收益,如果有一群鸭子,只会游泳.嘎嘎叫,但是某一天某种类型的鸭子学会了飞, ...

  3. [BZOJ1799][Ahoi2009]self 同类分布(数位dp)

    题目描述 给出两个数 a,ba,b ,求出 [a,b][a,b] 中各位数字之和能整除原数的数的个数. 输入输出格式 输入格式: 一行,两个整数 aa 和 bb 输出格式: 一个整数,表示答案 输入输 ...

  4. centOS系统将php升级到5.6 安装扩展

    在文章中,我们将展示在centOS系统下如果将php升级到5.6,之前通过yum来安装lamp环境,直接升级的话,提示没有更新包,也就是说默认情况下php5.3.3是最新 1.查看已经安装的php版本 ...

  5. P2900 [USACO08MAR]土地征用Land Acquisition

    \(\color{#0066ff}{ 题目描述 }\) 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选择并购一组土地,并购的价格为这些 ...

  6. linux下虚拟主机配置

    <VirtualHost *:80>ServerAdmin  admin@localhostServerName   www.baidu.org DocumentRoot "/d ...

  7. springboot整合redis存放session

    y进入maven依赖: <!--spring boot 与redis应用基本环境配置 --> <dependency> <groupId>org.springfra ...

  8. Qt 学习之路 2(2):Qt 简介

    Home / Qt 学习之路 2 / Qt 学习之路 2(2):Qt 简介 Qt 学习之路 2(2):Qt 简介  豆子  2012年8月21日  Qt 学习之路 2  43条评论 Qt 是一个著名的 ...

  9. js判断字符串是否有下划线

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. paramiko模块的安装和使用(含上传本地文件或文件夹到服务器,以及下载服务器文件到本地)

    安装和使用分两步介绍: 介绍一下,本文的运行环境是win7 64位 和python 2.7  . 安装: WIN7_64位 安装python-ssh访问模块(paramiko)的安装教程,本人亲测下面 ...