python学习笔记2.4-数据结构之列表和元组

python语言中包含的数据结构比较简单,除了简单的变量以外,还有列表(元组)、字典、集合。对于数据结构的操作一般包含四种:增、删、查、改。本文主要介绍列表(list)(包括元组tuple)的操作。 python中的list是一个有序动态集合,能够随时向其中添加或者删除元素,而tuple则相反,是一个有序静态集合,即一旦创建就不能随修改。

list

  • 创建(初始化)。list中的元素可以为任意类型,整型、字符型、列表、字典都可以.元素之间用逗号(,)隔开,整个list用[ ]包围。
la = [1,2,3]
lb = [1.2, 88, 'ss' ]
lc = [] # 空列表,也可以这样创建: lc = list()
ld = [[1, 3,5],{'s':8}, 'ss', 2.5, 6] # list的元素很灵活,只要是对象即可
  • 删除。list的删除很简单,直接使用python删除关键字:del 删除的内容, 这里删除的内容即可以是整个list,也可以是list中的某一个元素。
a = ['s','b', 'c']
del a[1] # 删除元素b
del a # 删除整个list
  • 查找(索引)。list是一个有序集合,即通过元素的下标来索引元素,与c/c++类似,第一个元素的下标为0(MATLAB的第一个下标为1)。
a = [i for i in range(10)]
for i in range(10):
    print(a[i])

除了能正向索引,还能反向索引,并不需要知道list的长度,list的第一个元素的下标为0,最后一个元素的下标为-1,一次向前减一,即倒数第二个元素下标为-2

a = [i for i in range(10)]
a[-1]  # 最后一个元素,打印出来为9
a[-2]  # 倒数第二个元素,打印出来为8

除了上述通过索引来获取单个元素,还可以通过区间下标(左闭右开)来一次索引很多元素,python中称为这种方式为切片,需要注意的是区间下标为左闭又开,即不会索引到右边下标对应的元素,只会索引到它前一个元素。

a = [i for i in range(1,10,2)]
print(a[1:3]) # 打印元素3和5
print(a[1:-1]) # 第二个到倒数第二个
print(a[1:]) # 第二个以后的全部元素

屏幕输出:

[3, 5]
[3, 5, 7]
[3, 5, 7, 9]
  • 修改。修改list一般有两种方式:
    • 在list末尾直接增加元素,这样也增加了索引,增长了列表长度。通过append()方法实现
    • 修改已有索引的元素的值,这样不增加索引,也不会增加列表的长度。
a = [1,4,3]
a.append(5) # 在末尾增加
a[2] = 9 # 通过索引直接修改
  • list的操作符操作。对于 list也可以使用len()、+、* 等操作符,len(list)用来获取list的长度(最大索引值+1),+ 号用于组合列表,* 号用于重复列表。
a = [7,'ww','ii']
length = len(a)
b = [9,44]
c = a + b #直接将a、b首尾相连
d = a*4 # 将列表a重复4次,并生成一个新的列表

*对于列表的操作只要没有赋值,就不会修改原列表的值,只会返回一个新的列表。例如上例中的+和操作、以及索引或者切片操作,都不会修改原list的值。*

  • list包含的其他方法:

方法

功能

list.append(obj)

在列表末尾添加新的对象

list.count(obj)

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

list.extend(seq)

在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

list.index(obj)

从列表中找出某个值第一个匹配项的索引位置

list.insert(index, obj)

将对象插入列表

list.pop(obj=list[-1])

移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

list.remove(obj)

移除列表中某个值的第一个匹配项

list.reverse()

反向列表中元素

list.sort([func])

对原列表进行排序

tuple

元组(tuple)是静态列表,初始化后就不能随表修改,用小括号( )表示,用下标索引,与list相比,没有修改的功能,其他都一样。在定义元组的时候我们需要注意:因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。因此,Python规定,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义

t = (3,5)
t = (4, ) # 只有一个元素时,一定要记得加,
t = (1,'2','ss',['e','y']) #当元组中的元素为可修改的对象,比如list和dict时,这里的list和dict能够修改。
t[3][0] = 1 #  这里修改的是list而不是tuple,因为tuple的索引没有变
t[0]  # 与list一样,用下标索引

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术点滴

对象的传值与返回

对象的传值与返回 说起函数,就不免要谈谈函数的参数和返回值。一般的,我们习惯把函数看作一个处理的封装(比如黑箱),而参数和返回值一般对应着处理过程的输入和输出。...

1788
来自专栏Hongten

python开发_dbm_键值对存储_完整_博主推荐

============================================

795
来自专栏mySoul

C++命名空间

742
来自专栏数据结构笔记

python基础类型(一):字符串和列表

注意到最后三个的单双引号是嵌套使用的,但是最后一个的使用方法是错误的,因为当我们混合使用两种引号时必须有一种用来划分字符串的边界,即在两边的引号不能出现在字符串...

712
来自专栏Crossin的编程教室

​Python 3 新特性:类型注解

我们知道 Python 是一种动态语言,变量以及函数的参数是不区分类型。因此我们定义函数只需要这样写就可以了:

1402
来自专栏十月梦想

nodejs的hello world的详解

前面几篇介绍过nodejs的第一个项目!这篇系统的介绍一下第一个nodejs项目

714
来自专栏Golang语言社区

GO-回调函数

1,什么是回调函数。一个函数中有个参数为函数的指针。该函数自己调用自己指针函数即可; 2,为什么要使用回调函数。抽象画了一个函数,简洁代码。异步执行 3,例子:...

2965
来自专栏PhpZendo

PHP 合并数组运算符 + 与 array_merge 函数

在 php 中对两个数组进行合并运算,通常使用 array_merge 和 加号(+)运算符,他们的区别是什么呢?先让我们看看下面的测试用例

401
来自专栏python百例

92-re模块基础用法

672
来自专栏猛牛哥的博客

快手(AAU)更新记录v2.9.1.36

803

扫码关注云+社区