Python 变量之列表与应用技巧

洛琳的笔记

Python 标准数据类型

Python 定义了一些标准数据类型,用于存储各种类型的数据。Python有五个标准的数据类型,分别是:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Python 中的变量赋值不需要类型声明,也就是说声明变量不需要使用关键字。Python 中变量赋值之后该变量就被创建。可以简单对单一变量赋值,亦可对同一变量重新赋值(不同数据类型也可以),也可以同时为多个变量赋值,如下。

counter = 100 # 赋值整型变量miles = 1000.0 # 浮点型name = "John" # 字符串ame = 100 # ame 被定义为新的数据类型ame1 = ame2 = ame3 = 100 #此三个变量被同时定义和赋值

Python 数据类型之列表


Python的变量灵活多变,不同的变量类型也有不同的使用技巧。上述的五种标准变量类型中string, list, tuple 都属于序列(sequence)类型。Python内置共有6种序列类型变量,分别为:

str, unicode, list, tuple, buffer, xrange(range)

其中只有一种可变序列类型,即List列表,其余的如tuple和range(关于xrange和range的区别,我会在以后总结介绍,或者可以在百度知道搜索#python for in原理#参考我的回答)都属于不可变的序列类型。这里所谓的"变" (mutable)是说,在对象创建之后,可以通过一些操作改变其内部状态,简言之就是改变对象本身。因为最近的工作遇到了很多关于列表的问题,今天我就借助这篇文章给大家介绍Python基本变量类型中的List,同时也给大家介绍一下List和Python内置函数相互配合的使用技巧。

Python 列表赋值与快速赋值


Python 列表使用方括号“[ ]”, 元素之间用逗号“,”分隔。列表元素的数据类型不限,可以是各种数据类型的集合,这点要比其他编程语言方便。列表元素个数不限,理论上只要内存足够大,元素个数就可以无限大。列表中的每个元素都分配一个数字作为索引,第一个索引值为0, 第二个为1,以此类推。List 列表普通赋值定义方法如下:

list1 = [‘physics‘, ‘chemistry‘, 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

然后就可以使用列表,但是在一些实际应用中需要初始化给定长度的列表,并对列表中每一个元素进行赋初值。如果列表长度在10以内,普通赋值依旧适用。如果列表长度过长,有可能需要写个循环进行赋值。技巧:可以使用下列方法对列表进行赋值:

>>> list1 = [0] * 5 # 数字类型>>> list1
[0, 0, 0, 0, 0]>>> list2 = [""] * 8 # 字符串类型>>> list2
[‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘]>>> list3 = [None] * 9 # 空>>> list3
[None, None, None, None, None, None, None, None, None]>>> list4 = [True] *7 # 布尔类型>>> list4
[True, True, True, True, True, True, True]

该方法快速高效,可以对指定长度的列表进行快速初始化,弊端在于不能在限定元素的类型,但可以按序混合元素的数据类型,如下:

>>> list5 = [True, ""] * 3>>> list5
[True, ‘‘, True, ‘‘, True, ‘‘]

Python 的列表索引,切片,改变与排序

Python 的列表索引方式和其他编程语言相似,即使用列表变量名,方括号与索引值进行索引。但Python与其他语言相比又有独特优势。即在方括号中使用冒号“”+“数字” 对列表进行切片。切片可以理解为:取列表中指定的连续元素。如下:

>>> List1 = [‘Google‘, ‘Runoob‘, ‘Taobao‘]>>> List1[2] # 取第二个‘Taobao‘>>> List1[-1] # 取倒数第一个‘Taobao‘>>> List1[1:] # 取 从索引1至最后一个
[‘Runoob‘, ‘Taobao‘]>>> List1[:2] # 取 从开始至索引2[‘Google‘, ‘Runoob‘]

Python 的列表是一个类的实例,也就意味着列表有自己的类方法。可以通过类方法对列表进行改变或者其他操作。常用类方法如下:


1    list.append(obj) # 在列表末尾添加新的对象
2    list.count(obj) # 某个元素在列表中出现的次数
3    list.extend(seq) # 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4    list.index(obj) # 从列表中找出某个值第一个匹配项的索引位置
5    list.insert(index, obj) # 将对象插入列表
6    list.pop(obj=list[-1]) # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7    list.remove(obj) # 移除列表中某个值的第一个匹配项
8    list.reverse() # 反向列表中元素
9    list.sort([func]) # 对原列表进行排序

在这里我给大家介绍一下列表操作中,倒序排列(revers)和整理排序(sort)的应用技巧。整理排序时,默认情况下,数字列表排序规则为:由小到大;字符串列表排列规则:由“0”到“10”,然后由a到z;数字和字符串混合型列表排序规则为:先数字,后字符。请参考下方例子:

>>> lt = [‘a‘, 1, "c", 3, "b", 2]>>> sorted(lt) # 使用内置方法[1, 2, 3, ‘a‘, ‘b‘, ‘c‘]>>> lt
[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]>>> lt.sort() # 使用类方法>>> lt
[1, 2, 3, ‘a‘, ‘b‘, ‘c‘]
>>>     
注意,sort() 为数据类型列表的类方法,sorted()为Python编程语言的内置函数

由上述例子可知,使用Python内置函数,返回值为一个列表,使用列表的类方法则返回值为空。意思就是说:在整理排序时,内置函数不改变原始列表,而使用类方法则原始列表将发生变化。在处理某些问题的时候,我们需要保持原始列表不变,这时候就应该考虑,哪一种方法更合适。这样的情况在倒序排列的时候也会发生,使用reverse()类方法时,虽然得到了倒序排列的列表,但是列表本身发生了变化,为了避免类似情况发生,备份一下原始列表是一种方法,但是会比较复杂。在这里我给大家介绍一个实用技巧。我们可以通过一种特殊的列表切片方法直接生成出一个倒序排列的新的列表,请参考下方例子:

>>> lt = [‘a‘, 1, "c", 3, "b", 2]>>> lt[::-1] # 采用切片法[2, ‘b‘, 3, ‘c‘, 1, ‘a‘]>>> lt
[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]>>> lt.reverse() # 采用类方法>> lt
[2, ‘b‘, 3, ‘c‘, 1, ‘a‘]

虽然python也有一个用于倒序排列的内置函数reversed(). 但是与sorted()函数不同,此函数返回值为一个列表迭(die)代器实例(iterator,以后的文章会详细介绍迭代器)而非一个新的列表,所以说用类似“[::-1]”的列表切片更为合适。

Python编程语言还有一些其它的内置函数用于处理列表。比如:不同列表间比较cmp(list1, list2),获取列表长度len(list),最大值max(list)最小值min(list),将元素变为列表list(seq)等。

Tipp 1: 虽然list不是python的保留字符可以用list作为变量名,而且不会产生错误。但是还是不建议使用其作为变量名。

Tipp 2: 其实python还有其他的不经常用到的内置函数: 用all(list)来检查列表中是否所有元素都为非空。 用any(list)来检查列表中是否有任何一个为


Python 列表数据类型转换和应用技巧


列表数据转换问题,一般分为两种情况。列表中元素的数据类型转换问题和整个列表数据类型转换问题。

列表元素数据类型转换,常见问题为数值类型和字符串类型间转换。例如将列表中的数字化字符串元素转换为数值类型元素,或反之; 或者将字符串列表的所有元素拼接,或反之。请参考下面例子。

>>> ll = [1, 2.3, 3.4, 4.5, 5.6] # 将数值型转换为字符>>> ll
[1, 2.3, 3.4, 4.5, 5.6]>>> map(str, ll)
[‘1‘, ‘2.3‘, ‘3.4‘, ‘4.5‘, ‘5.6‘]>>> ss = [‘1‘, ‘2.3‘, ‘3.4‘, ‘4.5‘, ‘5.6‘]  # 将字符型转换为数值型>>> map(float, ss)
[1.0, 2.3, 3.4, 4.5, 5.6]>>> tt = ["h", "e", "l", "l", "o"] # 元素拼合>>> tt
[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]>>> "".join(tt)‘hello‘>>> st = "hello"  # 字符串拆分>>> list(st)
[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]

列表整体式地数据类型转换,常见问题:将列表整体转换为一个字符串和将一个字符串中的列表部分转换为一个列表。第一种情况请参考下方例子:

>>> ss = [‘a‘, 1, ‘c‘, 3, ‘b‘, 2]>>> ss[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]>>> str(ss)"[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]"

可以看出只需要使用python的内置方法str()就实现。可是如果是第二种情况呢?如果要将字符串化的列表转换为一个列表,千万不要使用内置函数list()。因为不会得到预期的结果,这里要使用内置函数eval()。参考下方代码:

>>> st = "[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]">>> list(st) # 若使用list函数[‘[‘, "‘", ‘a‘, "‘", ‘,‘, ‘ ‘, ‘1‘, ‘,‘, ‘ ‘, "‘", ‘c‘, "‘", ‘,‘, ‘ ‘, ‘3‘, ‘,‘, ‘ ‘, "‘", ‘b‘, "‘", ‘,‘, ‘ ‘, ‘2‘, ‘]‘]>>> eval(st) # 若使用eval函数[‘a‘, 1, ‘c‘, 3, ‘b‘, 2]

Python基本数据类型中的List列表和列表的使用技巧今天就介绍到这里。想比大家都有这样的印象:如果能合理并巧妙地使用python内置函数来处理列表,将能够大大减少代码数量和提高代码质量。如果大家有别的想法或者其他使用技巧。欢迎订阅我的个人微信公共号,留言分享。

请长扫描二维码订阅我的个人微信公众号。原创不易,多多点赞分享支持。

时间: 2024-08-28 13:11:14

Python 变量之列表与应用技巧的相关文章

【美妙的Python之五】标准变量类型-列表,元组与元字典

美妙的Python之列表,元组,元字典 简而言之: Python 是能你无限惊喜的语言,与众不同.         1.列表:          Python的List列表类似于C里面的数组,但拥有更强大的功能,最突出的特点是List列表可以存储混合数据.          List列表可以通过下表[ ]访问,切片[:]进行截取.          如下图示例:         Python同时还提供了连接+,重复*操作.         如下图所示:          2.元组:       

Python 变量类型day03

变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值.例如: #!/usr/bin/python counter = 100 # An integer assignment miles = 1000.0 # A floating point na

python学习笔记—列表相关

python中的列表等同于其他编程语言中的数组 基本操作有: 1.插入,追加,修改,删除 name = ["Type99","M1A2","T-72","Leclerc"] print (name[2]) print (name[0:2]) print (name[1:-1]) print (name) name.insert(2,"Type96") #插入元素 print (name) name.appe

Python 变量类型

Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一

Python 常见异常列表

常见Python异常 异常 描述 AssertionError assert(断言)语句失败 AttributeError 试图访问一个对象没有的属性,比如foo.x ,但是foo没有x这个属性. IOError 输入/输出异常,基本上是无法打开文件. ImportError 无法引入模块或者包,基本上是路径问题 IndentationError 语法错误,代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存

[Python] 正确复制列表的方法

new = old[:] Python老鸟都知道以上代码是什么意思.它复制列表old到new.它对于新手来说是种困惑而且应该避免使用这种方法.不幸的是[:]标记法被广泛使用,可能是Python程序员不知道更好的列表复制法吧. 首先我们需要了解Python是如何管理对象和变量.Python没有C语言中的变量.在C语言中,变量不止是个名字,它是字节集合并真实存在于内存某个位置上.而在Python中,变量仅仅是指向对象的标签. 看看以下语句: a = [1, 2, 3] 它表示我们创建了一个指引指向列

python入门课程 第3章 Python变量和数据类型

第3章 Python变量和数据类型3-1 Python中数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种:一.整数Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样.计算机由于使用二进制,所以,有时候用十六进制表示整数比较

python变量类型

Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. python变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 数据类型 p

python变量、运算符、表达式、数据类型

一.变量 变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变,通俗的说变量就是给数据起个名字 1.变量的命名 变量名有字母.数字.下划线组成 数字不能开头 不可以使用关键字 举例:a,a1,a_1 2.变量的赋值 变量的赋值就是变量声明和定义的过程 举例:a=1 3.变量分类 不可变变量:数字.元组().字符串(值变的时候会指向一个新的地址) 可变变量:列表[].字典{}(值变,id不变) 举例: zhzhgo=25定义变量zhzhgo的值为25 id(zhzhgo)查看变量zhzhg