从0开始的python学习003序列

sequence 序列

序列是一组有顺序数据的集合。不知道怎么说明更贴切,因为python的创建变量是不用定义类型,所以在序列中(因为有序我先把它看作是一个有序数组)的元素也不会被类型限制。

序列可以包含一个或多个元素,也可以没有任何元素(空序列)。

当然一个序列也是一个元素,所以在序列中也可以包含多个序列。

序列有两种

tuple(定值表; 也有翻译为元组) 和 list (表)。

a1 = (1,2,3,4,‘5‘,True)

a2 = [6,‘7‘,False]

print(a1,type(a1))

print(a2,type(a2))

tuple()和list[]的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。

从含义可以看出和数学的开区间,闭区间正好相反。所以这个地方容易记错。

a1 = (1,2,3,4,‘5‘,True)

a2 = [6,‘7‘,False]

print(a1,type(a1))

print(a2,type(a2))

#一个序列作为另一个序列的元素
a3 = [1,[2,3]]

#空序列
a4 = []

print(a3,type(a3))

print(a4)

序列元素的引用

这点和数组有点像了,我们可以通过下标(从0开始)去获取元素。

a1 = (1,2,3,4,‘5‘,True)

a2 = [6,‘7‘,False]

print(a1,type(a1))

print(a2,type(a2))

#一个序列作为另一个序列的元素
a3 = [1,[2,3]]

#空序列
a4 = []

print(a3,type(a3))

print(a4)

print(‘============分割线=============‘)

print(‘数组[下标]‘)

print(a1[0])

print(a3[1])

#元素的变更

a2[0] = 9

print(a2)

#如果是tuple进行修改的时候会报错
a1[0] = 9

print (a1)

其他引用方式

范围引用: 基本样式[下限:上限:步长]

print(a1[:5])             # 从开始到下标4 (下标5的元素 不包括在内)

print(a1[2:])             # 从下标2到最后

print(a1[0:5:2])          # 从下标0到下标4 (下标5不包括在内),每隔2取一个元素 (下标为0,2,4的元素)

print(a1[2:0:-1])         # 从下标2到下标1

从上面可以看到,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。

尾部元素引用

print(a1[-1])             # 序列最后一个元素

print(a1[-3])             # 序列倒数第三个元素

同样,如果a1[0:-1], 那么最后一个元素不会被引用 (再一次,不包括上限元素本身)

取出的序列中的元素可以继续被引用:

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> print(1)
1
>>>
==================== RESTART: E:/python/studyPython004.py ====================
5
>>>
==================== RESTART: E:/python/studyPython004.py ====================
(1, 2, 3, 4, ‘5‘, True) <class ‘tuple‘>
[6, ‘7‘, False] <class ‘list‘>
>>>
==================== RESTART: E:/python/studyPython004.py ====================
(1, 2, 3, 4, ‘5‘, True) <class ‘tuple‘>
[6, ‘7‘, False] <class ‘list‘>
[1, [2, 3]] <class ‘list‘>
[]
>>>
==================== RESTART: E:/python/studyPython004.py ====================
(1, 2, 3, 4, ‘5‘, True) <class ‘tuple‘>
[6, ‘7‘, False] <class ‘list‘>
[1, [2, 3]] <class ‘list‘>
[]
============分割线=============
1
[2, 3]
Traceback (most recent call last):
  File "E:/python/studyPython004.py", line 29, in <module>
    a1[0] = 9
TypeError: ‘tuple‘ object does not support item assignment
>>>
==================== RESTART: E:/python/studyPython004.py ====================
(1, 2, 3, 4, ‘5‘, True) <class ‘tuple‘>
[6, ‘7‘, False] <class ‘list‘>
[1, [2, 3]] <class ‘list‘>
[]
============分割线=============
数组[下标]
1
[2, 3]
[9, ‘7‘, False]
Traceback (most recent call last):
  File "E:/python/studyPython004.py", line 36, in <module>
    a1[0] = 9
TypeError: ‘tuple‘ object does not support item assignment
>>>
==================== RESTART: E:/python/studyPython004.py ====================
(1, 2, 3, 4, ‘5‘, True) <class ‘tuple‘>
[6, ‘7‘, False] <class ‘list‘>
[1, [2, 3]] <class ‘list‘>
[]
============分割线=============
数组[下标]
1
[2, 3]
[9, ‘7‘, False]
3
>>> 

字符串是tuple

字符串是一种特殊的元组,因此可以执行元组的相关操作。

str = ‘abcdef‘

print(str[2:4])

这也就是它不能修改的原因。

原文地址:https://www.cnblogs.com/liuhappy/p/10572871.html

时间: 2024-11-10 15:41:43

从0开始的python学习003序列的相关文章

Python学习笔记----序列共性

序列操作符 作用seq[ind] 获得下标为ind 的元素seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合seq * expr 序列重复expr 次seq1 + seq2 连接序列seq1 和seq2obj in seq 判断obj 元素是否包含在seq 中 obj not in seq 判断obj 元素是否不包含在seq 中 1.连接符(+):将一个序列和另外一个相同的序列做连接 这种方式连接序列不是最快的, 对于字符串来说,不如将所有字符串放在一个列表或者可迭代对象

Python学习三---序列、列表、元组

一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. 从后向前,最后一个索引是-1,-2,.... python包含6种内建序列.最常用的两种类:列表和元组,其它内奸序列类型有字符串.Unicode字符串.buffer对象和xrange对象. 列表和元组的主要区别在于,列表可以修改,元组不能修改. 添加元素就用列表. 由于 一些原因不能修改时就用元组.

从0开始的Python学习014面向对象编程

 简介 到目前为止,我们的编程都是根据数据的函数和语句块来设计的,面向过程的编程.还有一种我们将数据和功能结合起来使用对象的形式,使用它里面的数据和方法这种方法叫做面向对象的编程. 类和对象是面向对象编程的两个重要方面.对于类和对象的关系,举个例子就像学生和小明同学的关系一样.学生(类)是一个拥有共同属性的群体,小明同学(对象)是其中一个有自己特性的个体. 对于一个对象或类的变量被称为域,函数被称为类或对象的方法. 域有两种类型--属于每个对象或属于类本身,分别成为实例变量和类变量. 类使用cl

Python学习笔记--序列

Sequence序列 1.序列操作 seq[ind1:ind2] seq[ind] seq1 + seq2 seq1 * seq2 seq * n obj in seq obj not in seq 2.切片操作 #反转操作 seq[::-1] #隔一个取一个 seq[::2] #取全部 seq[:None]

python学习--统计序列中元素出现的频度(次数)

例如有一个列表 l=[1,1,-1,2,3,22,34,32,2,-3,34,22,-5] 统计列表中每个元素出现的多少次 方式一: 先把列表变成一个字典dict,字典的key对应列表中的每一个元素,value代表每个元素出现的次数 d=dict.fromkeys(l,0)#两个参数,第一个参数为对应的列表,第二个参数设置dict的默认value=0. 然后,遍历列表中每一个元素,dict中碰到该元素,value就加1. for x in l: d[l]+=1 print(d) 方式二: 利用集

Python 学习笔记 -- 序列的基本使用

1 #list() 将一个可迭代对象转换为列表 2 #tuple() 将一个可迭代对象转化为元组 3 str1 = "我想去钓鱼" 4 str2 = list(str1) 5 print(str1) 6 print(str2) 7 str3 = tuple(str1) 8 print(str3) 9 10 #max函数和min函数 11 list1 = list("abcABC") 12 print(list1) 13 print(max(list1)) #求元素中

从0开始的Python学习008变量

局部变量 在我们定义函数的过程中,函数内外具有相同名称的变量是没有任何关系的.变量的名称对于函数来说是局部的,而它所在的代码块就是它的作用域. 使用局部变量 #局部变量 def func(x): print('x is',x) x = 2 print('Changed local x to',x) x = 5 func(x) print('x is still',x) 运行结果 使用global语句 如果想要在函数中为函数外的变量赋值,我们就要声明这个变量是全局的. 但是要尽量避免这么做,这样会

从0开始的Python学习009参数

默认参数 对于参数有时候我们希望他是可选的,前面介绍了函数柯里化,当然还有其他的解决方案.如果不想给某些参数提供值的话,就让这写参数使用默认值.在函数定义的时候给参数赋值使用(参数,参数=值......),从而给形参指定默认值. 注意默认参数的值是一个不可变的参数(也就是说默认参数是一个确定的值). #默认参数值 #对于参数 我们希望参数值是可选的智能的,如果使用者没有提供参数值的时候,程序会使用默认的参数.使用的方法就是在函数定义形参的时候写上(形参=默认值)即可 #注意默认值的参数不可变 d

Python学习一:序列基础详解

作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:[email protected] 日期:2017-11-18 Python学习一:序列基础详解 一:序列介绍 Python中一些类型的变量,就像容器一样,收纳多个数据,序列就像一个有序的队伍,像整齐的万里长城,存储着各种各样的数据,他们按照一定的秩序排列在一起,很威武,很美观,所以说序列是有序的数据集合.序列包含的一