python基本数据类型之列表与元组

python中list与tuple都是可以遍历类型。不同的是,list是可以修改的,而元组属于不可变类型,不能修改。

列表和元组中的元素可以是任意类型,并且同一个列表和元组中可以包含多种类型的元素。

list中有很多内置方法,元组由于不能修改,所以只有两个方法(count、index)。

列表的内置方法

list的内置方法有:append、clear、copy、count、extend、index、insert、pop、remove和sort。

1、添加方法:append、insert和extend

列表是可变类型,也就是说我们能够对列表进行元素的添加、删除和修改。list中提供了3种添加元素的方法。

  • append:在列表的最后添加元素;
  • insert:可以指定在哪个位置添加元素;
  • extend:在列表的最后添加新的列表(用于同时添加多个元素)。

(1) append方法

该方法仅需要一个参数,即所需要添加的元素。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
l.append(('Jerry',5))
print(l)

打印结果:

['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, ('Jerry', 5)]

可以看到append方法在列表的最后添加了一个元组。

(2) insert方法

该方法可以指定元素添加的位置。insert方法需要两个参数:insert(index, p_object),index用来指定插入位置,p_object是要插入的元素。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
l.insert(2, '哈喽')
print(l)

打印结果:

['haha', 'yeye', '哈喽', True, 143, {'name': 'Tom', 'age': 3}]

(3) extend方法

extend方法可以扩展原有列表,方法需要传入一个可遍历对象(list、tuple或字符串等),该方法就是将传入的对象添加到原列表的后面。

l.extend(['Lily', False, (234, 567)])
print(l)

打印结果:

['haha', 'yeye', '哈喽', True, 143, {'name': 'Tom', 'age': 3}, 'Lily', False, (234, 567)]

extend会将传入的对象进行遍历,然后把其中的每个元素作为新的元素添加到原列表中。在添加字符串时,列表后面增加的是字符串的单个字符。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
l.extend('zhe')
print(l)

打印结果:

['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, 'z', 'h', 'e']

2、删除方法:clear、pop和remove

(1) clear方法

该方法可以清空列表:

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
l.clear()
print(l)

打印结果:[]

(2) pop方法

pop方法可以删除列表中的指定元素,并将删除的元素返回。如果不传入参数,pop默认删除列表中最后一个元素;如果传入参数,则需要指定删除元素的索引。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
v1 = l.pop()
print('v1 = ' + str(v1)) v2 = l.pop(1)
print('v2 = ' + str(v2))

打印结果:

v1 = {'name': 'Tom', 'age': 3}
v2 = yeye

(3) remove方法

remove方法同样也可以删除列表中的指定元素,但是remove需要的参数则是要删除的对象,而不是索引。这一点与pop方法不同。

l.remove('haha')
print(l)

打印结果:

['yeye', True, 143, {'name': 'Tom', 'age': 3}]

remove方法会删除指定元素,但是并不会返回该元素。

需要注意的是:对于pop方法来说,如果要删除的列表为空或者没有指定的索引,会返回IndexError,即索引溢出错误;对于remove方法,如果删除的元素在列表中不存在,就会返回值错误ValueError。

3、其他方法

(1) copy方法

copy可以复制一个列表,这种复制属于浅拷贝(深浅拷贝的话题参见相关文章)。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
v = l.copy()
print(v)

打印结果:

['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]

(2) count方法

该方法用来计算某个元素在列表中出现的次数

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, True]
v = l.count(True)
print(v)

打印结果:2

(3) index方法

该方法返回某个元素在列表中第一次出现的索引。该方法有3个参数:index(value, start, stop),用法与字符串中的index方法一致。value是要查找的对象,start和stop分别指定查找的起始和终止位置(包含start,不含stop)。

l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, True]
v = l.index(True, 3)
print(v)

打印结果:5

上述例子中,True在l中有两个,分别在l[2]和l[5]两个位置。第二个参数'3'指定了开始查找的地方,即从索引3开始查找,因此第一个True就是索引'5'。

(4) sort方法

sort方法是为列表中的元素进行排序,但是使用该方法时,要保证元素的类型保持一致。即元素要么全部为字符串,要么全部为数字。sort方法没有返回值,它的排序会直接改变原来的list。

sort方法有两个参数:key=None, reverse=False。参数key使用一个函数来指定排序依据,reverse表示是否将顺序进行反转。

首先看没有参数的sort方法:

l = 'This is a sort function test'.split()
print('before:' + str(l))
l.sort()
print('after:' + str(l))

打印结果:

before:['This', 'is', 'a', 'sort', 'function', 'test']
after:['This', 'a', 'function', 'is', 'sort', 'test']

可以看到,sort排序默认是按照ascii码值进行的。大写字母在前,小写字母在后。

使用key来指定一个按照每个元素的小写字母进行排序的规则:

l = 'This is a sort function test'.split()
print('before:' + str(l))
l.sort(key = lambda x: x.lower())
print('after:' + str(l))

打印结果:

before:['This', 'is', 'a', 'sort', 'function', 'test']
after:['a', 'function', 'is', 'sort', 'test', 'This']

可以指定按照tuple中的元素来进行排序:

l_tuple = [('haha', 23), ('yuyu', 15), ('oiui', 32), ('erer', 53)]
l_tuple.sort(key=lambda x: x[1], reverse=True)
print(l_tuple)

打印结果:

[('erer', 53), ('oiui', 32), ('haha', 23), ('yuyu', 15)]

上面例子中使用的lambda是匿名函数,相关内容参见函数部分。

list中的sort方法与python中的sorted()内置方法很像,都可以自定义排序规则。不同的是,sorted()方法可以为所有可遍历类型进行排序。

tuple方法

tuple是不可变对象,所以它没有list中的修改、删除、添加等方法,它的方法只有两个:count和index。

count、index的方法与list中的方法使用方式一致,因此不再赘述。

python基本数据类型之列表和元组的更多相关文章

  1. PYTHON常用数据类型(列表,元组,字典)

    一.数字 1.整形:就是整数. 2.浮点型:就是小数. 3.布尔型:True或者是False,python里严格区分格式,空格缩进或者是大小写. 4.运算符有+ – * / ()%(求模运算取余数)* ...

  2. python -- 结构数据类型(列表、元组、集合、字典)

    一.列表 列表表示一组有序的元素,这些元素可以是数字.字符串,也可以是另一个列表. # ----------------------------------------# 列表(list):一组有序的 ...

  3. Python基本数据类型之列表、元组、字典、集合及其魔法

    列表 1.列表可存放任何东西,并且可修改 2.列表有序 3.列表支持索引与切片 4.支持for,while循环,所以列表为可迭代对象 5支持in操作,判断元素是否在列表中 6可多重索引嵌套列表 7.字 ...

  4. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  5. python【数据类型:列表与元组】

    python列表: 定义一个列表:cities=['北京','上海','广州','深圳'] 注意:列表的下标0表示第一个元素,下标-1表示最后一个元素 列表增加元素 在列表末尾添加一个元素:citie ...

  6. 第八篇Python基本数据类型之列表、元组与字典

    列表 写在最前,必须要会的:append(),extend(),insert(),索引,切片,循环 list  是一个类,是个对象 列表用 方括号[]括起来的,[]内以逗号分割每个元素,列表中的元素可 ...

  7. Python特色数据类型(列表)(上)

    Python从零开始系列连载(9)——Python特色数据类型(列表)(上) 原创 2017-10-07 王大伟 Python爱好者社区 列表 列表,可以是这样的: 分享了一波我的网易云音乐列表 今天 ...

  8. python基础知识3——基本的数据类型2——列表,元组,字典,集合

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...

  9. python 数据类型二 (列表和元组)

    一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...

随机推荐

  1. Make a plan, and stand for it!

    我发现博主本人善于事前做计划,事后做总结.但是不善于坚持自己的计划.就拿10.1这个假期来讲,放假前看多许多的攻略,计划了很多条的自驾出行的路线,但是好像一条也没坚持,最后选择了一条临时的线路,而且临 ...

  2. Redis 服务端配置——Could not connect to Redis at 127.0.0.1:6379: Connection refused

    [root@centoszang 桌面]# redis-cli Could : Connection refused Could : Connection refused not connected& ...

  3. 游戏中转盘概率的算法---python实现

    加入转盘的内容及概率如下 转盘倍数 0.5 0.6 0.7 0.8 1 1.2 1.5 1.8 2 机率 0.2 0.15 0.15 0.2 0.2 0.1 0.1 0.05 0.05 下面来实现转盘 ...

  4. Java 性能调优工具

    CPU使用率工具: vmstat 检查应用性能时,应该首先审查CPU时间.代码优化的目的是提升而不是降低(更短时间段内的)CPU的使用率.在试图深入优化应用前,应该先弄清楚为何CPU使用率低.磁盘使用 ...

  5. javac编译错误: 编码UTF8/GBK的不可映射字符

    转自:https://blog.csdn.net/leytton/article/details/52740171 Linux下为UTF-8编码,javac编译gbk编码的java文件时,容易出现“错 ...

  6. ipv6无网络访问权限怎么办

    有时IP4和IP6都正常连接,但突然又出现“IPV6无网络访问权限” 这是win7系统下经常发生的事情,如下图. 方法/步骤 1.IPV6没网络权限是正常的因为你没有IPV6的网络环境,那个只有部分教 ...

  7. ---dd io测试

    下面是一个简单测试,虽然不够准确但是简单立即可行, 当前目录的IO写读测试: (写) dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync ( ...

  8. 富文本编辑器summerNote

    载入富文本: $('.summernote').summernote({ height: 220, tabsize: 2, lang: 'zh-CN' }); 富文本获取内容: $('.summern ...

  9. Reboot-less node fencing in Oracle Clusterware 11g Release 2

    在进行一次RAC的高可用性测试时,当private网卡的网线被拔掉之后,没有出现传说中的有一个节点被CRS强制重启,取而代之的是node2上面的ASM实例和RDBMS实例被关闭:当网线被重新插上时,n ...

  10. Xpath延伸以及总结