Python中,最常用的数据结构就是序列了。序列有以下几种:元组,列表,字符串等。注:代码都是在IDE中编辑的,没有用交互式环境。

一、元组(tuple)

元组其实有点类似C++中的数组,即一旦指定了内容,那么这个元组就固定下来不能变了。不过并不是绝对不能改变,如果一个元组成员是一个列表,那么这个列表的修改操作是允许的。另外,Python是动态语言,因此元组中各个成员并不需要是同一种类型:

a = (1, 3, 5, [7, 9])
# a[1] = 11 错误,不允许修改元组的成员
a[3].append(11)# 正确
print a
(1, 3, 5, [7, 9, 11])

大部分时候,列表可以代替元组,不过,元组可以作为字典中的key,而列表不可以;另外,元组是许多内建函数的返回类型

二、列表(list)

列表与元组非常相似,他们支持的操作也有很多相似的地方,具体功能我们在一部分再介绍。列表用[ ]来表示,不同之处在于,列表可以随意修改元素以及添加元素:

a = [1, 3, 5, [7, 9]]
a[1] = 111
a[3].append(11)
print a [1, 111, 5, [7, 9, 11]]

三、序列支持的操作

1、索引

类似于C++中的数组和std::list<T>,序列都是线性结构,支持使用下标来进行索引:

a = [1, 3, 5]
b = (2, 4 ,6)
c = 'this is a string'
print a[1], b[1], c[1], c[-1] 3 4 h g

同其他语言一样,下标是从0开始计的,即第一个元素的索引为0。此外,索引可以为负数,即从右侧开始计算。

2、分片

分片操作支持每次访问一定区间的元素,以及指定访问的步长:

a = [1, 3, 5, 7, 9]
b = (2, 4, 6, 8, 10)
print a[1:3], b[0:4:2] #注意,左闭右开区间

同样,分片操作也可以是负数,不过要注意步长是否匹配。

3、加法和乘法

加法会连接两个类型相同的序列(不能是元组),乘法会赋值N次该序列,并返回一个新的序列:

a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
print a + b, '\n', a * 2 [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9]

4、长度、最大最小值

len()函数返回元素的个数,max()和min()函数返回。对于长度,他们都调用类内定义的__len__方法。

四、列表支持的操作

简单点说,列表主要支持的就是添加/删除元素,以及索引、统计、排序等操作:

a = [1, 3, 11, 13, 9, 7, 5]
b = [22, 44]
a.append(111) # a = [1, 3, 11, 13, 9, 7, 5, 111]
a.count(1) #
a.extend(b) # a = [1, 3, 11, 13, 9, 7, 5, 111, 22, 44]
a.index(3) #
a.insert(1, 666) # a = [1, 666, 3, 11, 13, 9, 7, 5, 111, 22, 44]
a.pop() # a = [1, 666, 3, 11, 13, 9, 7, 5, 111, 22]
a.remove(5) # a = [1, 666, 3, 11, 13, 9, 7, 111, 22]
a.reverse()# a = [22, 111, 7, 9, 13, 11, 3, 666, 1]
a.sort() # a = [1, 3, 7, 9, 11, 13, 22, 111, 666]

Python 元组、列表的更多相关文章

  1. python元组 列表 (取值、替换、插入、添加、删除)

    1.元组 列表 字典 元组( 元组是不可变的) hello = (1,2,3,4,5) type(hello)

  2. python 元组 列表 字典

    type()查看类型 //取整除 **幂 成员运算符: in  x在y序列中,就返回true 反之  not in 身份运算符: is is not 逻辑运算符 and or not 字符编码 问题 ...

  3. python 元组列表合并

    #create a tuple l = [(,), (,), (,)] print(list(zip(*l)))

  4. python 元组列表转为字典

    #create a list l = [(), (), (), (), (), ()] d = {} for a, b in l: d.setdefault(a, []).append(b) prin ...

  5. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  6. Python基础------列表,元组的调用方法

    Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...

  7. Python中列表、元组、集合、字典

    Python 列表(List) 列表是最常用的Python数据类型: 列表中的数据项不需要具有相同的类型: 列表也叫做数组,定义时使用[]: 通过下标访问列表中的元素,下标从 0  开始计数 列表的增 ...

  8. python 元组不变 列表可变

    python 元组不变 列表可变 1,   --元组,注意要有逗号: [1] --列表 竟然才开始写python blog:

  9. Python基础——列表、元组操作

    列表.元组操作 列表: 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0 ...

  10. Python 元组和列表

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup1 ...

随机推荐

  1. Open Judge 3339 List

    3339:List 总时间限制:  4000ms 内存限制:  65536kB 描述 写一个程序完成以下命令:new id ——新建一个指定编号为id的序列(id<10000)add id nu ...

  2. 【ZJOI2017 Round1练习&BZOJ4767】D1T3 两双手(排列组合,DP)

    题意: 100%的数据:|Ax|,|Ay|,|Bx|,|By| <= 500, 0 <= n,Ex,Ey <= 500 思路:听说这是一道原题 只能往右或者下走一步且有禁止点的简化版 ...

  3. hdu 2438 Turn the corner [ 三分 ]

    传送门 Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  4. css三大布局

    标准流: 从左到右,从上到下块级元素独占一行,行内元素碰到父盒子边缘换行 浮动: 特点 1 元素浮动之后不占据原来的位置(脱标),变成立体,下面可以有东西,只影响下面的 2 浮动的盒子在一行上显示 3 ...

  5. 【SQL Server 学习系列】-- ConnectionTimeout、CommandTimeout和BulkCopyTimeout

    1. SqlConnection.ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间.单位:秒默认值:15秒设置为0时,表示无限制 2. SqlCommand.C ...

  6. java的计时:毫秒、纳秒

    System.currentTimeMillis()获取毫秒值,但是其精度依赖操作系统 想实现较为精确的毫秒,可以采用 System.nanoTime()/1000000L System.nanoTi ...

  7. maven生命周期和依赖的范围

    转载:http://blog.csdn.net/J080624/article/details/54692444 什么是依赖? 当 A.jar 包用到了 B.jar 包时,A就对B产生了依赖: 在项目 ...

  8. 选带傅里叶变换(zoom-fft)

    选带傅里叶变换的原理大家能够看书.大致的步骤为 移频 (将选带的中心频率移动到零频) 数字低通滤波器  (防止频率混叠) 又一次採样  (将採样的数据再次间隔採样,间隔的数据取决于分析的带宽,就是放大 ...

  9. 微信小程序-setData()方法

    一般setData方法多用于点击后改变页面信息或者刷新后与后台交互获取最新的信息 注意: 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致 ...

  10. JAVA学习第六十四课 — 反射机制

       Java反射机制是在执行状态中,对于随意一个类,都可以知道这个类的全部属性和方法,对于随意一个对象,都可以调用它的随意一个方法和属性,这样的动态获取的信息以及动态调用对象的方法的功能称为java ...