python学习笔记之列表(list)与元组(tuple)详解

前言

最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧——我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆。

现在读到了列表(list)、元组(tuple)、集合(set)和字典(dict)四种在python内置的重要的数据结构。我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列表(list)和元组(tuple)比较常用的一些方法。

列表(list)与元组(tuple)

首先,对于列表(list)和元组(tuple)的概念有一个清楚的了解,清楚列表(list)是一个可变的序列,而元组(tuple)是一个不可变的序列。两种数据结构都是python内置的数据类型,使用非常方便。

对于这两种常用的数据类型是怎么样定义的吧。定义一个对象时使用列表(list)和元组(tuple)方法的必要工作。

>>> a_list=[]
>>> a_list
[]
>>> a_list2=set()
>>> a_list2
set([])
>>> type(a_list)
<type 'list'>
>>> type(a_list2)
<type 'set'>

以上使用了两种方法定义了一个空白的列表(list),这样的定义可要比C++的定义清晰明了,简单易懂了~!而定义一个空的元组也是一样的方法,不过定义一个空白的元组未免是白费力气的工作吧。不过还是show出来看看:

>>> a_tuple=()
>>> a_tuple
()
>>> a_tuple2=tuple()
>>> a_tuple2
()
>>> type(a_tuple)
<type 'tuple'>
>>> type(a_tuple2)
<type 'tuple'>

这样子定义一个空白的元组真是没有任何意义。

定义完对象就可以对对象进行操作了。由于元组(tuple)是不可以变的列表,其方法少得可怜,所以就不说了,在这里仅讨论列表(list)的方法。

上面我们定义了一个空白的列表(list),一个列表(list)既然创建了,一定是用来储存数据的啦,所以首先介绍的是在列表中增加元素,在列表(list)增加元素的方法有3个(据我所知而已),分别是:append、extend、insert。

@append方法是在列表末尾追加新的元素。只可以一个一个地添加,如果你不想这么麻烦,请看下一种方法extend。

@extend方法是在列表末尾一次性追加另一个列表中的多个值。

@insert方法就可以在列表(list)的任何位置插入元素。

详细的应用请看下面:

>>> a_list=[]
>>> a_list.append(1)
>>> a_list
[1]
>>> a_list.append('python')
>>> a_list
[1, 'python']
>>> a_list.extend([3,'ruby','perl',8,'julia'])
>>> a_list
[1, 'python', 3, 'ruby', 'perl', 8, 'julia']
>>> a_list.insert(1,'javascript')
>>> a_list
[1, 'javascript', 'python', 3, 'ruby', 'perl', 8, 'julia']
>>> a_list.insert(2,2)
>>> a_list.insert(4,'php')
>>> a_list
[1, 'javascript', 2, 'python', 'php', 3, 'ruby', 'perl', 8, 'julia']

酷吧,是不是感到很奇怪呢?列表(list)里的元素竟然可以是不同类型的。

说完了添加元素到列表(list)中,下面我们应该说一下怎么样在列表中删除掉元素。

列表(list)中删除元素的方法有pop,remove.

@pop方法很简单,此方法返回值的被删除的元素,这一点请记住。

@remove方法是移除列表中的某个元素。

实例如下:

>>> a_list
[1, 'javascript', 2, 'python', 'php', 3, 'ruby', 'perl', 8, 'julia']
>>> a_list.sort()
>>> a_list
[1, 2, 3, 8, 'javascript', 'julia', 'perl', 'php', 'python', 'ruby']
>>> a_list.pop()
'ruby'
>>> a_list.pop(0)
>>> a_list.remove(2)
>>> a_list
[3, 8, 'javascript', 'julia', 'perl', 'php', 'python']

请注意pop的用法,如果pop函数没有参数的话,直接删除列表末尾的元素。

此外,列表的方法还有很多,例如sort(排序)、reverse(方向存放元素)、count(计算列表中相同元素的个数)、index(指引位置)……

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

对于不可变的元组(tuple)是不是真的不可以改变呢?

如果你使用了元组这个东西,然而你又想在某个地方改变它,怎么办呢?

这个问题当然是可以解决的啦。python中有两个元素list、tuple可以解决问题。

就是先把元组强制转换成列表,进行修改然后再转换成元组。工作量是大了点,代价而且很高。

>>> a_tuple=(0,1,2,4,5,6,7,8,9)
>>> list_=list(a_tuple)
>>> list_.insert(3,3)
>>> a_tuple=tuple(list_)
>>> a_tuple
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Python list和tuple的相互转换

list转为tuple:

temp_list = [1,2,3,4,5]

将temp_list进行强制转换:tuple(temp_list)

查看是否转换成功:print type(temp_list)

tuple 转为list:

temp_tuple = (1,2,3)

方法类似,也是进行强制转换即可:list(temp_tuple)

查看是否转换成功:print type(temp_tuple)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Python序列之list和tuple常用方法以及注意事项

    sequence 序列 sequence(序列)是一组有顺序的对象的集合.序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的对象.对象还可以是另一个序列.序列有两种:list (表) 和 tuple(元组) . list和tuple的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更. List 获得list元素的个数: 复制代码 代码如下: >>> lst=['更新慢','python',5.44,Fals

  • 详解python 拆包可迭代数据如tuple, list

    拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, (2017, 12, 29)) 假设数据的意思是购买windows 10 份, 每份价值25.1刀.数据获取时间是2017年12月29日. 我们需要获取该数据中每份的价格: >>> a[2] 也可以使用拆包的方法: >>>os_type, number, price, dat = a >>>price 注意的问题

  • python的dict,set,list,tuple应用详解

    本文深入剖析了python中dict,set,list,tuple应用及对应示例,有助于读者对其概念及原理的掌握.具体如下: 1.字典(dict) dict 用 {} 包围 dict.keys(),dict.values(),dict.items() hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key del 或 dict.pop可以删除一个item,clear清除所有的内容 sorted(dict)可以把dict排序 dict.get()可以查找没存在的key,dict

  • Python中内置数据类型list,tuple,dict,set的区别和用法

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的List: L = [] Python中的List是有序的,所以要访问List的话显然

  • python学习笔记之列表(list)与元组(tuple)详解

    前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧--我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆. 现在读到了列表(list).元组(tuple).集合(set)和字典(dict)四种在python内置的重要的数据结构.我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列表(list)和元组(tuple)比较常用的一些方法. 列表(list)与元组(tuple)

  • Python学习笔记之迭代器和生成器用法实例详解

    本文实例讲述了Python学习笔记之迭代器和生成器用法.分享给大家供大家参考,具体如下: 迭代器和生成器 迭代器 每次可以返回一个对象元素的对象,例如返回一个列表.我们到目前为止使用的很多内置函数(例如 enumerate)都会返回一个迭代器. 是一种表示数据流的对象.这与列表不同,列表是可迭代对象,但不是迭代器,因为它不是数据流. 生成器 是使用函数创建迭代器的简单方式.也可以使用类定义迭代器 下面是一个叫做 my_range 的生成器函数,它会生成一个从 0 到 (x - 1) 的数字流:

  • Python学习笔记之字符串和字符串方法实例详解

    本文实例讲述了Python学习笔记之字符串和字符串方法.分享给大家供大家参考,具体如下: 字符串 在 python 中,字符串的变量类型显示为 str.你可以使用双引号 " 或单引号 ' 定义字符串 定义字符串 my_string = 'this is a string!' my_string2 = "this is also a string!!!" # Also , we can use backslash '/' to escape quotes. this_strin

  • Python学习笔记之列表推导式实例分析

    本文实例讲述了Python学习笔记之列表推导式.分享给大家供大家参考,具体如下: 列表推导式 列表推导式可以快速简练地创建列表 之前的复杂写法: capitalized_cities = [] for city in cities: capitalized_cities.append(city.title()) 简化后的写法: capitalized_cities = [city.title() for city in cities] 由此可见:借助列表推导式,我们可以使用 for 循环用一步创

  • Python学习笔记之列表和成员运算符及列表相关方法详解

    本文实例讲述了Python学习笔记之列表和成员运算符及列表相关方法.分享给大家供大家参考,具体如下: 列表和成员运算符 列表可以包含我们到目前为止所学的任何数据类型并且可以混合到一起. lst_of_random_things = [1, 3.4, 'a string', True] # 这是一个包含 4 个不同类型元素的列表 print(lst_of_random_things[0]) # 1 获取上述列表的第一个值和最后一个值 print(lst_of_random_things[0]) #

  • Python学习之线程池与GIL全局锁详解

    目录 线程池 线程池的创建 - concurrent 线程池的常用方法 线程池演示案例 线程锁 利用线程池实现抽奖小案例 GIL全局锁 GIL 的作用 线程池 线程池的创建 - concurrent concurrent 是 Python 的内置包,使用它可以帮助我们完成创建线程池的任务. 方法名 介绍 示例 futures.ThreadPoolExecutor 创建线程池 tpool=ThreadPoolExecutor(max_workers) 通过调用 concurrent 包的 futu

  • python学习字符串驻留与常量折叠隐藏特性详解

    下面是Python字符串的一些微妙的特性,绝对会让你大吃一惊. 案例一: 案例二: 案例三: 很好理解, 对吧? 说明: 这些行为是由于 Cpython 在编译优化时, 某些情况下会尝试使用已经存在的不可变对象而不是每次都创建一个新对象. (这种行为被称作字符串的驻留[string interning]) 发生驻留之后, 许多变量可能指向内存中的相同字符串对象. (从而节省内存) 在上面的代码中, 字符串是隐式驻留的. 何时发生隐式驻留则取决于具体的实现. 这里有一些方法可以用来猜测字符串是否会

  • Python学习之私有函数,私有变量及封装详解

    目录 什么是私有函数和私有变量 私有函数与私有变量的定义方法 Python中的封装 面向对象编程小练习 通过学习私有函数与私有变量,可以更好的完善 类的开发 ,从而丰满我们的场景与实现方案. 什么是私有函数和私有变量 私有函数与私有变量中的私有是什么意思? —> 简单理解就是独自拥有.不公开.不分享的意思.放到函数与变量中就是独自拥有的函数与独自拥有的变量,并且不公开.这样我们就理解了什么是私有函数与私有变量. 无法被实例化后的对象调用的类中的函数与变量 虽然无法被实例化后的对象调用,但是在 类

  • Python树莓派学习笔记之UDP传输视频帧操作详解

    本文实例讲述了Python树莓派学习笔记之UDP传输视频帧操作.分享给大家供大家参考,具体如下: 因为我在自己笔记本电脑上没能成功安装OpenCV-Contrib模块,因此不能使用人脸识别等高级功能,不过已经在树莓派上安装成功了,所以我想实现把树莓派上采集的视频帧传输到PC的功能,这样可以省去给树莓派配显示屏的麻烦,而且以后可能可以用在远程监控上. 1 UDP还是TCP 首先考虑用哪种传输方式,平常TCP用的非常多,但是像视频帧这种数据用TCP不是太合适,因为视频数据的传输最先要考虑的是速度而不

  • Flask框架学习笔记之消息提示与异常处理操作详解

    本文实例讲述了Flask框架学习笔记之消息提示与异常处理操作.分享给大家供大家参考,具体如下: flask通过flash方法来显示提示消息: from flask import Flask, flash, render_template, request, abort app = Flask(__name__) app.secret_key = '520' @app.route('/') def index(): flash("Hello loli") return render_te

随机推荐