列表和元祖

在python中,最基本的数据结构为序列。序列中的每个元素都有编号,即位置或索引。其中第一个元素的索引为0,第二个元素的索引为1,依次类推。从0开始指的是相对于序列开头的偏移量。用负索引表示序列末尾元素的位置。

序列概述

Python三种序列:列表、元祖、字符串。

列表和元祖的不同在于,列表是可以修改的,而元祖不可以。(想想为什么有的内置函数返回元祖的原因。)

在自己编写程序的时候,几乎所有的情况都可使用列表来代替元祖。一种情况例外,将元祖作用作字典键。(字典键是不允许修改的。)

列表用中括号来表示:

>>> lilei = [‘lilei‘, 18]

序列还可以包含其他序列:

>>> lilei = [‘lilei‘, 18]
>>> hanmeimei = [‘hanmeimei‘, 13]
>>> jom = [‘jom‘, 15]
>>> database = [lilei, hanmeimei, jom]
>>> database
[[‘lilei‘, 18], [‘hanmeimei‘, 13], [‘jom‘, 15]]

  PS: Python支持一种数据结构的基本概念,名为容器。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(列表、元素)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名字(键)。有一种既不是序列也不是映射的容器,它就是集合。

通用的序列操作

  有几种操作适用于所有的序列,包括索引、切片、相加、相乘成员资格检查。另外,Python中还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。

 PS:有一种操作暂时不讨论,迭代。对序列进行迭代意味着对其每个元素都执行特定的操作。

索引

  序列中所有的元素都有编号---从0开始递增。你可像下面这样使用编号来访问各个元素:

>>> msg = ‘hello ‘
>>> msg[0]
‘h‘

  当使用负数索引的时,Python将从右(即元素的最后一个位置)开始往左数,因此-1是最后一个元素的位置。

>>> msg[-1]
‘ ‘

 对于字符串字面量(以及其他的序列字面量),可以直接对其执行索引操作,无需先将其赋给变量。这与先赋给变量再对变量执行索引操作的效果是一样的。

>>> ‘hello‘[1]
‘e‘

  如果函数调用返回一个序列,可直接对其执行索引操作。例如,如果你指向获取用户输入的年份的第四位,可像下面这样做:

>>> fourth = input("Year: ")[3]
Year: 2018
>>> fourth
‘8‘

  

切片

  除使用索引来访问元素外,还可使用切片来访问范围内的元素。为此,可使用俩个索引,并用冒号分割:

>>> msg = ‘https://www.baidu.com‘
>>> msg[12:17]
‘baidu‘

  第一个索引包含的是第一个元素的编号,但第二个索引是切片后余下的第一个元素标号。

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

  这貌似就出现一个问题,无法取出来最后一个元素。可以这样:

>>> numbers[7:0]

 步长

  执行切片操作的时候,可以显示或者隐式的指定起点和终点,如:

>>> msg = ‘god is girl‘
>>> msg[0:]
‘god is girl‘
>>> msg[:8]
‘god is g‘
>>> msg[:]   #复制整个序列
‘god is girl‘

  但通常忽略一个参数,即步长。在普通切片中,步长为1(即默认为1).可以显示的指定步长:

>>> msg[0::2]
‘gdi il‘

  还可以指定负数步长:

>>> msg[-1:0:-2] ‘li id‘

  序列相加

可使用加法运算符来拼接序列:

>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> ‘hello‘ + ‘ ‘ + ‘world!‘
‘hello world!‘
>>> [1, 2, 3] + ‘hello‘
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

  PS:一般而言,不能拼接不同类型的序列。

相乘

将序列与数x相乘时,将重复这个序列x次来创建一个新序列:

>>> ‘python‘ * 5
‘pythonpythonpythonpythonpython‘
>>> [1, 2] * 5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

空列表:

>>> list = []
>>> list
[]

包含10个‘什么都没有的值’的列表 

>>> list = [None] * 10
>>> list
[None, None, None, None, None, None, None, None, None, None]  

成员资格

要检查特定的值是否包含在序列中,可使用运算符in:

>>> name = ‘Ubuntu‘
>>> ‘0‘ in name
False
>>> ‘u‘ in name
True
>>> list = [‘root‘, ‘ubuntu‘, ‘admin‘]
>>> ‘root‘ in list
True
>>> ‘roo‘ in list
False

  一般而言,运算符in检查指定对象是否是序列(或其他集合)的成员(即其中的一个元素),但是对于字符串来说,只有它包含的字符才是其成员或元素。

函数list实则是类)

>>> list(‘hello‘)
[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]

  可将任何序列作为list的参数。

>>> ‘‘.join([‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘])
‘hello‘

修改列表

修改列表很容易,就如同普通的赋值,不同的是使用索引表示法给特定的元素赋值。

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

PS:不能给部存在的元素赋值。

>>> x = [1, 2, 3, 4]
>>> x[4] = [5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

删除元素

从列表删除元素很容易,只需要使用del语句即可。

>>> list = [‘root‘, ‘ubuntu‘, ‘admin‘]
>>> del list[0]
>>> list
[‘ubuntu‘, ‘admin‘]

给切片赋值

>>> name = list(‘root‘)
>>> name
[‘r‘, ‘o‘, ‘o‘, ‘t‘]
>>> name[2:] = list(‘ubuntu‘)
>>> name
[‘r‘, ‘o‘, ‘u‘, ‘b‘, ‘u‘, ‘n‘, ‘t‘, ‘u‘]
>>> name[2:] = ‘0‘
>>> name
[‘r‘, ‘o‘, ‘0‘]

  

原文地址:https://www.cnblogs.com/kongzhou/p/9011358.html

时间: 2024-11-08 23:45:59

列表和元祖的相关文章

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

what&#39;s the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法

计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中==比较的是值,is比较的是id.比较运算只能在同种类型下进行比较.字符串的比较是按照顺序依次进行比较.逻辑运算的顺序先后为要用括号来表示. 基本运算符如下: 算术运算 以下假设a=10,b=20 比较运算 以下假设a=10,b=20 赋值运算 逻辑运算  成员运算 身份运算 what's the 内

基本数据类型(字符串_数字_列表_元祖_字典_集合)

基本数据类型(字符串_数字_列表_元祖_字典_集合) 1.字符串 2.数字 除了布尔类型外,int.long.float和complex都可以使用的运算为:加.减.乘.除.整除.幂运算和取余 3.列表和元组 列表的内容可变,可以包含任意对象,使用中括号表示.元组的内容不可变,可以包含任意对象,使用圆括号表示.元组 1 l = [1, 2, 3, '4', '5'] # 列表 2 l = list((1, 2, 3, '4', '5')) 3 4 t = (1, 2, 3, '4', '5') #

python学习第二周(数据类型、字符串、列表、元祖、字典)

一.模块.库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持. 模块初始化:模块就是库,库可以是标准库或者是第三方库. sys模块 os模块 Sys.path 导入模块的时候,先从当前目录下面查找. 我们起名字时候不能和导入的模块名字相同. Python的第三方库 E:\\python_path\\base\\lib\\site-packages Python的标准库位置 E:\\python_path\\base Sys.ar

python系列之列表和元祖

容器: 列表和元祖 区别: 列表可以修改,而元祖不能 序列:列表,元祖(序列中每个元素都有自己的id(编号),编号从0开始往右递增) 共性: 索引: eg:name='Jack',name[0]='J' 注:也可以直接'Jack'[0]='J' 分片: 提供两个索引作为边界,第一个索引的元素包含在分片内,而第二个则不包含在分片内. eg:numbers=[0,1,2,3,4,5,6,7,8,9],则numbers[0:3]=[0,1,2] 捷径:numbers[:]就等于整个序列 步长:eg:n

02、列表和元祖

序列 序列:各个元素通过逗号分隔,写在[方括号]中.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1. 包括的操作有: 1 索引(indexing) 2 分片(sliceing) 3 加(adding) 4 乘(multiplying) 5 检查成员(in) 1.索引(indexing): 通过编号访问元素,从0开始递增,返回访问的元素. 2.分片(sliceing): 通过冒号想隔的两个索引来取值.例:[2:5]从3开始到5 3.步长(Step length

python基础--列表、元祖、字典、集合

列表(List) 1.列表特点 列表是可变的!! list 是一种有序的序列,可以添加.删除其中的元素,并且可以通过下标(索引)访问 数据 2.简单的常用操作 A.通过下表访问元素 1 print(list1[0]) ##正序 2 print(list1[-1]) ##倒序 3 5 list[0] = '123' ##修改指定位置的值 B.切片 1 print(list[1:3]) 3.常用操作: 1 ##append:追加元素 2 list1.append('赵四') 3 4 ##extend

Python基础-列表、元祖、字典、字符串

列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每一个元素被分配一个序号----即元素的位置,也称为索引.下标.第一个索引是0,第二个索引是1,以此类推. Python包含6种内建的序列,此次重点讨论最常用的两种类型:列表.元祖.其他内建序列类型包括:字符串.Unicode字符串.buffer对象和xrange对象.接下来讲解对所有序列都通用的操作

set()助力列表,元祖去冗余

1 ls=[1,1,1,5] 2 ls_1=list(set(ls)) 3 print(ls_1) 4 tp={1,1,1,'2'} 5 tp_1=tuple(set(tp)) 6 print(tp) 结果生成的新列表和元祖无重复元素. 原文地址:https://www.cnblogs.com/baby-step/p/9026313.html