Python之序列:列表、元组的学习笔记

0X00 列表和元组

Python 里有个东西叫做序列,可以想象成一堆数据。可以简单的通过序列实现数组、链表、栈和队列等数据结构。
序列有几种,常见的是列表和元组。

0X01 序列分片

我们可以从序列中截取一部分,这种操作被称为分片
分片的时候我们可以选择起始点和结束点,还能选择步长,甚至乃能倒序
分片使用:分隔开参数,一般情况下有两个参数,截取第一个参数到第二个参数,左开右闭
如果参数是负数的话,则表示倒数第几个
但是可以接受第三个参数,第三个参数表示步长。如果第二个参数是 2 那么就是接一跳一。
如果参数为空则表示极限。 具体可以看下面的代码

>>> username = 'hello,world'
>>> print username[4:8]         #截取从4到8,左开右闭
    o,wo
>>> print username[4:-2]        #截取4到倒数第4的参数,如果想要包括最后一个是不能用-1的,要用下面的方式
    o,wor
>>> print username[2:]          #截取包括最后一个的话不能用-1,因为-1是最后一个,然后区间是左开右闭,所有右边留空就表示极限了
    llo,world
>>> print username[:]           #两头取极限,就是完整的序列
    hello,world
>>> print username[1:8:2]       #演示步长,此处步长为2
    el,o
>>> print username[8:0:-1]      #当步长为-1的时候,就是从后向前的
    row,olle

0X02 序列拼接

序列拼接就和 Java 里的字符串拼接差不多,可以单纯的用一个加号连在一起。当然 Python 比 Java 方便的一点就是,不只是字符串,什么东西只要是在序列里就能用序列拼接到一起。
Python 中用加号的方式把序列拼接在一起是返回一个新的序列而不是直接修改其中的一个序列。
>>> username = 'hello'
>>> password = 'world'
>>> print username + ',' + password
    hello,world
序列不只能做加法,还能做乘法。序列乘 n 之后返回一个重复了 n 次的序列
>>> username = 'hello,world'
>>> print username * 3
    hello,worldhello,worldhello,world

0X03 空序列

空序列是空的,而不是值为 0。也许现在不知道这东西干嘛用,等到时候用到了就豁然开朗了
username = [None] * 10 #这样就生成了一个长度为10的空序列

0X04 成员判断

成员判断就是判断一个元素是不是存在于一个序列里
这里返回的是布尔值,True 或者 False
>>> username = 'hello,world'
>>> ',' in username     #判断元素是不是在序列里
    True
>>> 'hello' in username #判断序列是不是在序列里
    True
>>> username = ['hello', 'world']
>>> 'hello' in username
    True
>>> 'hel' in username
    False

0X05 长度 & 统计

可以统计一个序列的长度,还能计算出序列所有元素的最大和最小
具体的排序方法可以去网上找找或者自己尝试一下,针对每种类型的排序方式是不一样的
>>> username = 'hello,world'    #获取长度
>>> print len(username)
    12
>>> number = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print max(number)   #统计最大
    9
>>> print min(number)   #统计平均
    1
0X06 列表赋值

对列表的赋值和对其他编程语言里的数组赋值几乎是一样的
>>> username = [0, 1, 2, 3, 4, 5]
>>> username[3] = 33
>>> username[5] = 55
>>> print username
    [0, 1, 2, 33, 4, 55]
0X07 列表删除数据

删除列表里的数据也非常易于理解
>>> username = ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
>>> del username[5] #删除索引为5的元素,也就是第6个
>>> print username
    ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'] #处在原来5的位置的逗号不在了
0X08 列表分片赋值

分片赋值相当于把以前的部分数据盖上,写上新的数据
>>> username = list('hello,world')
>>> username[1:5] = list('++++++')
>>> username[2:2] = list('------')
>>> print username  #数据添加成功
    ['h', '+', '-', '-', '-', '-', '-', '-', '+', '+', '+', '+', '+', ',', 'w', 'o', 'r', 'l', 'd']
>>> username[3:5] = []  #理论上可以通过这种方式去删除列表中的数据,不过非常不建议这么做,没人愿意看这种代码,包括几天之后的你自己
0X09 列表常用方法

append 添加数据 ---- 单个
列表尾部插入新的数据,直接修改之前的列表,而不是返回一个新的
>>> username = [1, 2, 3, 4, 5]
>>> password = [6, 7, 8, 9, 0]
>>> username.append(password)
>>> print username
    [1, 2, 3, 4, 5, [6, 7, 8, 9, 0]]
count 统计数据
计数,统计一个列表在另一个列表里出现了多少次
>>> username = 'hello,world'
>>> username.count('l')
    3
>>> username = ['hello', 'hello', 'world', 'test']
>>> username.count('hello')
    2
extend 添加数据 ---- 多个
将数据插入尾部,修改之前的列表,而不返回新的列表
>>> username = [1, 2, 3, 4, 5]
>>> password = [6, 7, 8, 9, 0]
>>> username.extend(password)
>>> >>> print username
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
index 索引查找
查找第一个匹配的位置,并返回索引位置。如果返回 0 则是在 0 的位置上找到了,而不是没找到。没找到的话会直接抛出异常
>>> username = 'hello,world'
>>> username.index('l') #返回位置
    2
>>> username.index('h') #返回0的位置
    0
>>> username.index('x') #找不到,抛出异常了
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    ValueError: substring not found
insert 插入数据 ---- 准确位置
向列表中插入数据,可选参数有插入位置和插入内容
>>> username = [1, 2, 3, 4, 5, 6, 7]
>>> username.insert(3, 666)
>>> print username  #向3的位置上插入666
    [1, 2, 3, 666, 4, 5, 6, 7]
pop 弹出数据 ---- 出栈
将列表中的最后一个数据弹出来,返回且删除它。 如果知道数据结构中的栈的话,就明白了,可以比喻成 出栈
>>> username = [1, 2, 3, 4, 5, 6, 7, 8]
>>> username.pop()  #出栈
    8
>>> username.pop(2) #选择删除
    3
remove 匹配删除
移除匹配到的第一项
>>> username = [1, 2, 3, 4, 5, 6]
>>> username.remove(2)
>>> print username
    [1, 3, 4, 5, 6]
sort 排序方法
可以通过 Python 内置算法排序,甚至还可以自定义参数
>>> username = [1, 5, 2, 5, 65, 23, 54675, 8, 34, 5568, 345]
>>> username.sort()
>>> print username
    [1, 2, 5, 5, 8, 23, 34, 65, 345, 5568, 54675]
sorted 排序函数
类似 sort,不过这个是返回一个新的列表
>>> username = [1, 5, 2, 234, 3465, 234, 4657, 5, 65, 23, 54675, 8, 34, 5568, 345]
>>> sorted(username)
    [1, 2, 5, 5, 8, 23, 34, 65, 234, 234, 345, 3465, 4657, 5568, 54675]
list(reversed(x)) 反向排序
逆向
>>> username = [1, 5, 2, 234, 3465, 234, 4657, 5, 65, 23, 54675, 8, 34, 5568, 345]
>>> username = sorted(username)
>>> print username
    [1, 2, 5, 5, 8, 23, 34, 65, 234, 234, 345, 3465, 4657, 5568, 54675]
>>> list(reversed(username))
    [54675, 5568, 4657, 3465, 345, 234, 234, 65, 34, 23, 8, 5, 5, 2, 1]
0X0A 元组简介

元组一般用括号表示
元组和列表相比,列表可以修改而元组不能修改
>>> username = ('h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd')
>>> password = ('x', ) #创建一个只包含一个数据的元组

时间: 2024-09-24 12:40:38

Python之序列:列表、元组的学习笔记的相关文章

Python中Random和Math模块学习笔记

  这篇文章主要介绍了Python中Random和Math模块学习笔记,本文讲解了math模块的数学常量.常用简单函数.三角函数等,讲解了random模块的常用函数.随机挑选和排序等内容,需要的朋友可以参考下 由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下 1. math模块 math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准

Python数据库ORM工具sqlalchemy的学习笔记

SQLAlchemy是python的一个数据库ORM工具,提供了强大的对象模型间的转换,可以满足绝大多数数据库操作的需求,并且支持多种数据库引擎(sqlite,mysql,postgres, mongodb等),在这里记录基本用法和学习笔记. 一.安装 通过pip安装 $ pip install SQLAlchemy  二.使用 首先是连接到数据库,SQLALchemy支持多个数据库引擎,不同的数据库引擎连接字符串不一样,常用的有 mysql://username:password@hostna

python字典(数组)操作排序之学习笔记

字典是最与php的数组相似的序列结构.python的列表只能是以索引数字开头并且顺序递增的序列.字典则可以是以字母为key的序列. 元组一般用圆括号来表示,如(1,2,3) 列表一般用方括号来表示,如[1,2,3] 而字典(dict)则用大括号来表示,如{'a':1,'b':2,'c':3} 与php不同,php的key,value是用key=>value来表示,python而是用冒号":"来分隔. 字典可以使用大括号书写键和值或使用dict函数来创建. dict函数可以指定两个

Python中元组列表与字典学习笔记

引言 这篇文章介绍python中的三种组合数据类型,文章后半段会介绍如何在这些组合数据类型中使用"分片"取出数据. 文章目录 0×1.元组 在python中,元组使用中括号来创建,如果括号中仅包含一个元素,需要在元素末尾添加一个逗号(不添加逗号数据会被创建成字符串或数值数据类型),元组在创建后,不能添加删除其中的元素,其值是固定不变的,请看下面的实例: #创建三个元组,b元组仅包含一个字符串元素,所以末尾需要添加一个逗号,否则b将被创建为字符串对象,c元组是一个多维元组,包含了a和b元

Python的装饰器decorator的学习笔记

1. 这是个什么东东? 书上说得不是太清楚,它说类似于Java的AOP(Aspect Oriented Programming,面向方面编程),我对AOP一无所知.根据我对许多例子用法的反复揣摩,我认为是类似于程序设计语义学中所说的前键 与后键 的概念(Eiffel中的@pre 与@post ).当然你可以在装饰器中做比前键与后键更多的事,如:引入日志.增加计时逻辑来检测性能.给函数增加事务的能力.   其实总体说起来,装饰器其实也就是一个函数,一个用来包装函数的函数,返回一个修改之后的函数对象

Perl中的列表和数组学习笔记_perl

一.列表 列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:(). 注:只含有一个数值的列表(如:(43.2) )与该数值本身(即:43.2 )是不同的,但它们可以互相转化或赋值.列表例: 复制代码 代码如下:     (17, $var, "a string")     (17, 26 << 2)     (17, $var1 + $var2) ($value, "The an

kvm虚拟化学习笔记(五)之windows虚拟机性能调整

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290682 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt

kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1289627 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290191 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h