数据结构就是数据的集合。Python最基本的数据结构就是序列,每个元素都会被分配一个元素的位置,也可以称为索引。注意索引都是从0开始的。

Python包含6种内建的序列,分别是列表、元组、字符串、Unicode字符串、buffer、xrange。

列表和元组的主要区别,列表可以修改,元组不可以。

一个简单的序列示例

>>> member1 = ['zhao',12]
>>> member2 = ['li',23]
>>> database = [member1,member2]
>>> database
[['zhao', 12], ['li', 23]]

Python还有一种容器的数据结构。 序列(列表和元组)和映射(字典) 两种主要的容器。序列包括每个元素的编号,映射每个元素则有一个名字(称为键)。

序列的操作

索引

>>> number = '0123456789'
>>> number[0]
'0'
>>> number[1]
'1'
>>> number[-1]
'9'

分片

>>> number[0:2]
'01'

>>> number[-3:-1]
'78'
>>> number[-3:]
'789'

>>> number[:]
'0123456789'

更大的步长

>>> number[0:-1:2]
'02468'

>>> number[-1:0:-2]
'97531'

>>> number[::-2]
'97531'

序列相加

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

列表是不可以和字符串连接一起,序列的相加必须是两种相同类型的序列,才能进行连接操作。 比如下面不一样,相加就会报错。

>>> [1,2,3] + '456'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

乘法

>>> [ [1,2,3] ] * 3
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

用数字和列表相乘就是把序列中的元素重复x次。

成员资格 in

>>> number = [0,1,2,3,4,5,6,7,8,9]
>>> 2 in number
True

in 运算符 是用来检查一个值是否在序列中存在。示例

>>> database = [ ['zhao',123],
... ['li',456],
... ['wang',789] ]
>>> ['wang',123] in database
False
>>> ['wang',789] in database
True

长度、最小值和最大值

len、min和max

>>> number = [0,1,2,3,4,5,6,7,8,9]
>>> len(number)
10
>>> max(number)
9
>>> min(number)
0

关于max传进去的参数可以是迭代、两个和两个以上的参数,返回 最大Item 或 最大参数。

Python之List

因为字符串不能像列表一样修改,所以需要list函数把字符串转成List。

>>> list('123456')
['1', '2', '3', '4', '5', '6']

小技巧

>>> somelist = list('123456')
>>> ' '.join(somelist)
'1 2 3 4 5 6'

基本的List操作

改变列表:元素赋值

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

删除元素

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

分片赋值

>>> number = [0,1,2,3,4,5,6,7,8,9]
>>> number[2:] = [10,11,12,13,14,15,16,17,18,19,20]
>>> number
[0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

分片赋值可以不需要替换任何原有元素的情况,插入新元素。

>>> number = [0,1,2,3,4,5,6,7,8,9]
>>> number[1:1] = [11,12,13]
>>> number
[0, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9]

分片赋值,也是可以删除元素

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

当然删除元素结果是和 del number[2:5] 是一样的。也可以通过修改步长,进行分片赋值。

列表方法

append 向List末尾追加新对象:

>>> number = [0,1,2]
>>> number.append(99)
>>> number
[0, 1, 2, 99]

count 统计某个元素出现列表中的次数:

>>> number = [0,0,1,1,3,3,3]
>>> number.count(3)
3
>>> number.count(1)
2

extend 可以在列表中一次性向末尾追加多个序列值。

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

虽然这个操作和连接操作一样,(a + b).

但是他们的区别在于, extend方法修改了被扩展的序列(在这个例子中,就是a)。而连接操作,则会返回一个全新的列表,那么这样的操作的效率会比extend方法低。

也有类似和extend方法就是 利用分片赋值

a[len(a):] = b

一样是在末尾追加序列值。不过,代码还要注重可读性。这里的可读性就没有extend方法好了。

index 找出列表元素的索引位置

>>> number = [1,2,3,4,5]
>>> number.index(5)
4
>>> number.index(6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 6 is not in list

当找不到的该元素的时候,会引发异常。

insert 将元素插入列表中

>>> number = [1,2,3]
>>> number.insert(2,99)
>>> number
[1, 2, 99, 3]

分片插入和 上面删除一样

>>> number = [1,2,3]
>>> number[2:2] = [99]
>>> number
[1, 2, 99, 3]

pop 移除最后一个元素,并返回该元素

>>> number = [1,3,5]
>>> number.pop()
5
>>> number
[1, 3]

pop 实际上一种常见的数据结构---栈。  入栈 和 出栈。

remove 移除列表中第一个匹配项的元素

>>> number = [1,2,2,3]
>>> number.remove(2)
>>> number
[1, 2, 3]

同样如果 remove 移除没有在序列中的元素,也会引发异常。

reverse 将序列元素反转

>>> number = [1,2,3]
>>> number.reverse()
>>> number
[3, 2, 1]

reversed函数会返回 反转序列的迭代器,迭代器是用于循环遍历。

sort 对原序列进行排序

>>> number = [23,18,99]
>>> number.sort()
>>> number
[18, 23, 99]

如果想排序返回序列的副本,可以使用 sorted 函数

高级排序

元素按照特定的方式进行排序,内建函数 cmp 提供升序。

>>> cmp(10,22)
-1
>>> cmp(22,10)
1
>>> cmp(10,10)
0

>>> number = [99,12,33]
>>> number.sort(cmp)
>>> number
[12, 33, 99]

sort还有其它两个关键字参数,key、reverse

>>> words = ['Hello','zhao','you']
>>> words.sort(key=len)
>>> words
['you', 'zhao', 'Hello']

key 是为每个元素创建一个键,然后根据键来进行排序。

>>> words.sort(key=len,reverse=True)
>>> words
['Hello', 'zhao', 'you']

reverse 指明是否反向排序

元组

元组也是一种序列,而且序列不能修改。

创建元组

>>> 1,2,3
(1, 2, 3)

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

创建元组必须有逗号,哪怕只有一个元素。

>>> 4,
(4,)

创建长度为3的 元组

>>> tuples = (42,) * 3

>>> len(tuples)
3

元组函数 Tuple

>>> tuple('123')
('1', '2', '3')

>>> tuple([1,2,3])
(1, 2, 3)

这里和列表是一样的

元组操作

>>> tuples = (1,2,3,4,5)
>>> tuples[0]
1
>>> tuples[2:4]
(3, 4)

Python 列表和元组 (2) 持续更新的更多相关文章

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

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

  2. python列表与元组的用法

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

  3. (转)python 列表与元组的操作简介

    python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...

  4. 认识Python 列表和元组

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

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

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

  6. Python列表和元组

    Python是没有数组的概念,但是和数组比较相近的概念是列表和元素. 下面两个例子展示列表和元组. # coding=utf-8 # 元组 students = ('小明', '小黄', '小李', ...

  7. 好用的函数,assert,random.sample,seaborn tsplot, tensorflow.python.platform flags 等,持续更新

    python 中好用的函数,random.sample等,持续更新 random.sample random.sample的函数原型为:random.sample(sequence, k),从指定序列 ...

  8. #9 Python列表和元组

    前言 Python中有6种序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.序列通用操作包括:索引.切片.长度.加.乘.最大值.最小值,遍历和检查成员.虽然Pytho ...

  9. Python: 列表,元组,字典的区别

    Python中有3种内建的数据结构:列表,元组和字典 1.列表 list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中项目应该包括在方括号中,这样python就知道是在指明 ...

随机推荐

  1. 获取淘宝客推广位id(adzone_id)

    在 获取淘宝联盟选品库的宝贝信息 这个接口中需要用到 推广位id,那边这个ID在哪找呢?1.进入阿里妈妈后台>推广管理>推广位管理,如下图: 2.在推广位管理 列表页 找到 PID,最后一 ...

  2. 【转帖】sysbench的安装和做性能测试

    iMySQL | 老叶茶馆 sysbench的安装和做性能测试 http://imysql.cn/node/312 我仿照这个学的 但是 需要用更新的版本才可以.   By yejr on 14 六月 ...

  3. 什么是DataV数据可视化

    DataV数据可视化是使用可视化大屏的方式来分析并展示庞杂数据的产品.DataV旨让更多的人看到数据可视化的魅力,帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用,满足您会议展览.业务监 ...

  4. LeetCode 第 164 场周赛

    访问所有点的最小时间 不难看出,从点(x1,y1) 到 (x2,y2) 的步数需要 min(dx,dy),其中 dx = abs(x1-x2),dy = abs(y1-y2) class Soluti ...

  5. (一)Spring概念

    目录 Spring是开源的轻量级框架 Spring核心 Spring是一站式的框架 Spring版本 Spring是开源的轻量级框架 开源是什么,不用多说: 轻量级:Spring框架的使用,不需要依赖 ...

  6. 内存溢出,内存泄漏,CPU溢出区别

    内存溢出 out of memory,就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误 内存泄漏是指你向系统申请分配内存进行使用(new),可是使用 ...

  7. spark异常篇-集群模式无法打印

    在集群上运行 spark 时候,对 RDD 进行 foreach(print) 并没有打印任何内容,这是怎么回事呢? 这是因为 RDD 运行在各个 worker 上,foreach 是对 各个 wor ...

  8. zookeeper客户端KeeperErrorCode = ConnectionLoss异常问题排查历险记

    经过线报,说前方应用有异常,导致了可用性变差.咦!讨厌的异常,抛异常是程序猿最讨厌的事情之一. 经过收集异常信息如下 ​ ​ 2019-06-24 10:57:41.806 ERROR [hades- ...

  9. POJ 2485 Prim 找最长的边

    A国没有高速公路,因此A国的交通很困难.政府意识到了这个问题并且计划建造一些高速公路,以至于可以在不离开高速公路的情况下在任意两座城镇之间行驶. A国的城镇编号为1到N, 每条高速公路连接这两个城镇, ...

  10. 利用Mathpix Snipping Tool轻松在markdown/LaTeX中输入电子书和论文的数学公式

    最近写图形学博客写累了,公式太多了,一个个输入实在太累,所以从数学建模队友那里吃了一个安利. 官网下载 下载安装后,直接新建一个截图,就可以转成LaTeX数学公式了.效果如下: 爽的一批啊!!! 另外 ...