列表

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

list函数

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

list('Hello')

['H', 'e', 'l', 'l', 'o']

列表的基本操作

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

改变列表元素的值

>>>

>>> a=list('ooooo')

>>> a[2]='A'

>>> a

['o', 'o', 'A', 'o', 'o']

>>>

删除列表元素

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

>>> a

['o', 'o', 'A', 'o', 'o']

>>> del a[2]

>>> a

['o', 'o', 'o', 'o']

>>> len(a)

4

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

分片赋值

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

>>>

>>> str1= list('abcdef')

>>> str1

['a', 'b', 'c', 'd', 'e', 'f']

>>> str1[3:]=list('abc')

>>> str1

['a', 'b', 'c', 'a', 'b', 'c']

>>>

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

#长序列替换短分片

>>> str2=list('ppp')

>>> str2

['p', 'p', 'p']

>>> str2[1:]=('ython')

>>> str2

['p', 'y', 't', 'h', 'o', 'n']

>>>

>>>#短序列替换长分片

>>> str2= list('abcdefg')

>>> str2

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> str2[1:]= list('bc')

>>> str2

['a', 'b', 'c']

>>>

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

>>> str3=[1,5]

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

>>> str3

[1, 2, 3, 4, 5]

>>>

列表方法

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

对象.方法(参数)

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

append

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

>>> lst=[1,2,3]

>>> lst.append(4)

>>> lst

[1, 2, 3, 4]

>>>

count

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

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

3

>>>

extend

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

>>>

>>> a=[1,2,3]

>>> b=[4,5,6]

>>> a.extend(b)

>>> a

[1, 2, 3, 4, 5, 6]

>>>

index

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

>>> a=['Me','and','my','broken']

>>> a.index('my')

2

>>>

insert

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

>>>

>>> number=[1,2,3,4,5]

>>> number.insert(3,'hello')

>>> number

[1, 2, 3, 'hello', 4, 5]

>>> number.insert(3,6)

>>> number

[1, 2, 3, 6, 'hello', 4, 5]

>>>

pop

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

>>>

>>> number=[1,2,3,4,5,6,7,8]

>>> a = number.pop()

>>> a

8

>>> number

[1, 2, 3, 4, 5, 6, 7]

>>>

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

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

>>>

>>> number

[1, 2, 3, 4, 5, 6, 7]

>>> number.pop(3)

4

>>> number

[1, 2, 3, 5, 6, 7]

>>>

remove

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

>>> str4 = list('hello')

>>> str4

['h', 'e', 'l', 'l', 'o']

>>> str4.remove('l')

>>> str4

['h', 'e', 'l', 'o']

>>>

reverse

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

>>>

>>> number

[1, 2, 3, 5, 6, 7]

>>> number.reverse()

>>> number

[7, 6, 5, 3, 2, 1]

>>>

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

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

>>>

>>> number

[7, 6, 5, 3, 2, 1]

>>> number = list(reversed(number))

>>> number

[1, 2, 3, 5, 6, 7]

>>>

sort

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

>>> number

[1, 4, 3, 7, 4, 8, 3, 2, 7, 9]

>>> number.sort()

>>> number

[1, 2, 3, 3, 4, 4, 7, 7, 8, 9]

>>>

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

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

方法一

>>>

>>> x = [3,5,7,3,1,2,4]

>>> y =x[:]

>>> y.sort()

>>> x

[3, 5, 7, 3, 1, 2, 4]

>>> y

[1, 2, 3, 3, 4, 5, 7]

>>>

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

>>>

>>> x

[3, 5, 7, 3, 1, 2, 4]

>>> y=x

>>> y.sort()

>>> x

[1, 2, 3, 3, 4, 5, 7]

>>> y

[1, 2, 3, 3, 4, 5, 7]

>>>

方法二

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

函数:sorted().

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

>>>

>>> x=[3,5,2,1,7,4,8,9,3]

>>> y=sorted(x)

>>> x

[3, 5, 2, 1, 7, 4, 8, 9, 3]

>>> y

[1, 2, 3, 3, 4, 5, 7, 8, 9]

>>>

如何修改排序规则?

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

key

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

>>>

>>> str5= ['one','year','like','any','old','other','year']

>>> #默认的排序依据字符串排序规则

>>> str5.sort()

>>> str5

['any', 'like', 'old', 'one', 'other', 'year', 'year']

>>> #使用key参数来修改排序规则

>>> #我们使用字符长度作为键来排序

>>> str5.sort(key=len)

>>> str5

['any', 'old', 'one', 'like', 'year', 'year', 'other']

>>>

reverse

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

>>>

>>> num=[2,3,4,5,6,78,4,3,3,4,5,8,9]

>>> num.sort()

>>> num

[2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 8, 9, 78]

>>> num.sort(reverse=True)

>>> num

[78, 9, 8, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2]

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

元组

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

元组在映射中可以作为键使用,因为要保证键的不变性。

元组作为很多内置函数和方法的返回值存在。

tuple()函数

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

>>>

>>> tul1= tuple('abcdef')

>>> tul1

('a', 'b', 'c', 'd', 'e', 'f')

>>>

元组语法

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

>>>

>>> #这是一个数学数

>>> (1)

1

>>> #这是一个元组

>>> (1,)

(1,)

>>>

一个更加明显的例子:

>>>

>>> a = 10*(1)

>>> b = 10*(1,)

>>> a

10

>>> b

(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

>>>

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

定义元组

定义空元组

>>>

>>> tul1=()

>>> tul1

()

>>>

定义只有一个元素的元组

>>>

>>> tul2=(1,)

>>> tul2

(1,)

>>>

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

>>>

>>> a = [1,2,3,4,5,6]

>>> b = tuple (a)

>>> b

(1, 2, 3, 4, 5, 6)

>>>

元组操作

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

多谢看完文章,如所记有差错恳请指出。

python列表添加元组_python 列表与元组的操作简介相关推荐

  1. python处理列表中字典_Python 列表、元组、字典及集合操作详解

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

  2. python 元组 列表 字典区别_Python列表、元组、字典、集合、字符串的异同总结

    1.数据类型 列表.元组.字典.集合.字符串均属于python3的标准数据类型. 字符串和元组属于不可变数据,即创建后不可修改. 列表.字典.集合属于可变数据,即创建后可以修改元素. 2.创建有元素的 ...

  3. python列表元组_Python列表元组操作

    names=['申屠康艳','徐盼','施颖蕾','周鼎翔','周圣峰','周韩伟','周彦斌','周祥德', '周帅育','周群璨'] #往列表添加元素 names.append('周义浩') #在 ...

  4. python元组和列表的联系_Python 列表和元组

    1.数据结构:通过某种方式组织在一起的数据元素的集合 2.在Python中,最基本的数据结构是序列(sequence),最后一个元素标记为-1,倒数第二个元素为-2,第一个元素位于最开始,索引为0 3 ...

  5. python生成元组_python 列表生成、元组、字典

    *列表生成 1语法: range(startistopstep)2.7版本 list(range(startistopstep))3.5 2.通过循环生成列表: [x for x in range(1 ...

  6. python列表增加一行_Python 列表中的修改、添加和删除元素的实现

    本文介绍的是列表中的修改.添加和删除元素.第一次写博客,如果本文有什么错误,还请大家评论指正.谢谢! 创建的列表大多数都将是动态的,这就意味着列表创建后,将随着程序的运行删减元素. 修改列表元素 修改 ...

  7. python列表添加字符串_python字符串,列表常用操作

    24天养成一个好习惯,第五天! 一.字符串需要掌握的操作 1.取值(索引取值)需要注意的是只能取,不能改 1 msg = 'hello world' 2 print(msg[4]) 2.切片(顾头不顾 ...

  8. python列表添加字符串_python字符串和列表操作

    1.去除字符串列表中多余的"\n" 字符串函数strip()可以用于去除字符串收尾的非显字符,将字符串列表str中的非显字符去除并存入新的字符串列表s1中. 方法一: 1 s1=[ ...

  9. python列表比较方法_python列表常用方法

    list是一个类,用中括号括上,逗号分隔,元素可以是数字,字符,字符串,也可以是嵌套列表,布尔类型. 1.通过索引取值 li=[1,12,9,'age',['wangtianning',[19,'10 ...

最新文章

  1. python慕课视频-python爬虫:爬取网站视频
  2. java 按键框架,如何在java中更改框架?
  3. 使用SOCKET实现TCP/IP协议的通讯
  4. 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用
  5. 解决IE6下 position的fixed定位问题
  6. acwing2041. 干草堆(差分数组)
  7. Lisenter笔记
  8. 一文详解物化视图改写
  9. 怎样学操作系统?一文带你掌握核心内容
  10. 7-58 肿瘤诊断 (30 分)
  11. 5.css企业开发经验,习惯盒模型,层模型
  12. Spring Boot基础教程 - 程序猿DD
  13. 解决word中公式插入后行间距变大,和文字不统一的问题
  14. 3dmax打开材质编辑器就崩溃
  15. ubuntu 18.04.1安装RTL8821CE无线网卡驱动
  16. 分布式系统之Quorum机制
  17. STAF rc = 6
  18. 可以帮助提升程序员高效工作效率的常用小工具推荐
  19. 手把手教你逆向分析 Android 程序 1
  20. 责任链模式与lambda重构责任链模式

热门文章

  1. 天天在用Redis,那你对Redis的AOF持久化到底了解多少呢?
  2. Oracle数据库的增删改操作介绍
  3. linux中循环创建文件,linux-尝试创建一个文件以调用另一个文件进行循环搜索
  4. JVM学习-分代收集算法
  5. C语言强化——学生管理系统
  6. B/S开发框架Web安全问题及防范规范之挂马和WebShell
  7. 什么舱位_把“订舱位”说成book warehouse position,外企不会要你
  8. 计算机组成原理R0bus是什么,计算机组成原理实验 堆栈寄存器实验
  9. centos 卸载docker_linux系统Docker安装及卸载
  10. api压测工具_高并发之API接口,分布式,防刷限流,如何做?