一、list(列表)

  list是Python里的一种容器,里面可以存储多个任何类型的数据,长度也可以任意伸缩,可以像C语言中数组那样,按照索引下标获取对应的值。但数组是一个存储多个固定类型变量的连续内存块空间,list则可以存储任意类型数据(怀疑里面存的是泛型指针(void)* ,由解释器自行判断变量类型并改变指针类型?)

>>> li = ['alex',[1,2,3],'wusir','egon','女神','taibai']
>>> print(li)
['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'taibai']
>>> l1 = li[0]
>>> l1
'alex'
>>> l2 = li[1]
>>> l2
[1, 2, 3]
>>> l3 = li[0:3]
>>> l3
['alex', [1, 2, 3], 'wusir']

  list的常用操作有增、删、查、改,类似关系型数据库。下面详细介绍:

  1. 增加元素(3种常用操作)

    1.1  append(value)

    在list末尾追加1个元素 

>>> students = [] # 将students赋值为一个空列表
>>> students.append(123)
>>> students[-1]
123
>>> students.append("日天")
>>> students
[123, '日天']

  例子:用input()给一个学生名字列表中不断添加新学生,用户输入为小写或大写字母’q’则停止添加

students = [];
while 1:
username = input(">>>");
if username.strip().upper() == 'Q':
break;
else:
students.append(username);
print(students);

  运行结果如下:

>>>wy
>>>czy
>>>xjj
>>>q
['wy', 'czy', 'xjj']

  

    1.2  insert(index, value)

    在list索引为index的位置插入1个元素,原索引位置及后面的元素自动向后顺延

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.insert(2, 123) # 将数字123插入到students[2]的位置
>>> students
['wy', 'czy', 123, 'xjj', 'xzf'] # 123位于students[2], "xjj"和"xzf"依次顺延为索引3和4的位置

  

    1.3  extend(iterable_obj)

    将一个可迭代的对象拆分后,依次追加在列表末尾。可迭代对象包括str, list, tuple, dict等多种数据类型。如果参数不是可迭代对象,直接报错

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.extend("123") # 将str类型数据追加至list末尾
>>> students
['wy', 'czy', 'xjj', 'xzf', '1', '2', '3']
>>> students = students[-3:]
>>> students
['1', '2', '3']
>>> students.extend(["Linux", "FreeBSD", "Unix", 3.1415926]) # 将list类型数据追加至list末尾
>>> students
['1', '2', '3', 'Linux', 'FreeBSD', 'Unix', 3.1415926]
>>> students.extend((1, 3)) # 将tuple类型数据追加至list末尾
>>> students
['1', '2', '3', 'Linux', 'FreeBSD', 'Unix', 3.1415926, 1, 3]
>>> students = students[:-2]
>>> students
['1', '2', '3', 'Linux', 'FreeBSD', 'Unix', 3.1415926] # 试试将456这个int类型数据(不可迭代对象)用extend方法追加至list末尾,结果就会报错,显示 TypeError: 'int' object is not iterable (int不是可迭代对象),此时应该使用append方法追加
>>> students.extend(456)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-2b24a1ec749d> in <module>
1 students = [];
----> 2 students.extend(456); TypeError: 'int' object is not iterable
>>>

  

  2. 删除元素(4种常用操作)

    2.1  remove(value)

    删除list中值为value的元素。如果value不存在于list中,直接报错。因此可以先判断x in list, 确保万无一失

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.remove("czy")
>>> students
['wy', 'xjj', 'xzf']
>>> students.remove(123)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-02c036a833fe> in <module>
1 students = [];
----> 2 students.remove(123) ValueError: list.remove(x): x not in list

  

    2.2  del list(index)

    删除list[index]的元素。如果索引值不合理,直接报错

>>> protocol = ["ospf", "isis", "bgp", "rip", "ip", "ipv6", "tcp", "udp"]
>>> del protocol[0]
>>> protocol
['isis', 'bgp', 'rip', 'ip', 'ipv6', 'tcp', 'udp']
>>> del protocol[-2]
>>> protocol
['isis', 'bgp', 'rip', 'ip', 'ipv6', 'udp']
>>> del protocol[:-1] # del支持切片删除,删除除最后一个元素以外的所有元素
>>> protocol
['udp']
>>> del protocol[1] # 删除不存在的索引值直接报错
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-4-f4e1bb9c187f> in <module>
1 protocol = ["udp"]
----> 2 del protocol[1] IndexError: list assignment index out of range

  

    2.3  pop(index) 

    删除list[index]元素并返回被删除的元素值(类似于del,但del并不会返回元素值),index为空默认删除最后一个元素,index不合理直接报错。

    pop和append结合使用,可以让list可以模仿stack数据结构

>>> students = ['wy', 'czy', 'xjj', 'xzf']
# 删除students[0]
>>> students.pop(0)
'wy' # 删除了"wy"并返回了这个值
>>> students
['czy', 'xjj', 'xzf']
>>> students.pop(1)
'xjj'
>>> students.pop() # 参数为空默认删除最后一个元素
'xzf'
>>> students
['czy']
>>> students.pop(1) # 删除不存在的索引值报错
----------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-3-a236b1b1cc3a> in <module>
1 students = ["czy"]
----> 2 students.pop(1) IndexError: pop index out of range

  

    2.4  clear()

    清空列表,没有参数

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.clear()
>>> students
[]
>>>

  

  3. 查询元素(3种常用操作)

    索引取值、索引切片取值、循环遍历

>>> protocol = ["ospf", "isis", "bgp", "rip", "ip", "ipv6", "tcp", "udp"]
>>> protocol[3]
'rip'
>>> protocol[2:6]
['bgp', 'rip', 'ip', 'ipv6']
# 循环遍历
for p in protocols:
print(p, end = " ")
# 循环遍历结果
ospf isis bgp rip ip ipv6 tcp udp

    

  4. 修改元素(2种常用操作)

    4.1 索引访问修改

1 >>> students = ['wy', 'czy', 'xjj', 'xzf']
2 >>> students[2] = "WuShu"
3 >>> students
4 ['wy', 'czy', 'WuShu', 'xzf']

    4.2 索引切片修改(必须是个可迭代对象iterable_obj)

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students[0:2] = "云姐plfd"
>>> students
['云', '姐', 'p', 'l', 'f', 'd', 'xjj', 'xzf']
>>> students[0:2] = "XY"  # ”XY“为可迭代对象,如list, tuple, str等
>>> students
['X', 'Y', 'p', 'l', 'f', 'd', 'xjj', 'xzf']
>>> students[0:3] = "XY"
>>> students
['X', 'Y', 'l', 'f', 'd', 'xjj', 'xzf']
>>>

  

  5. 公共方法(len, count, index, sort, reverse)

    5.1 len(list),len为函数

    显示列表元素的个数

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> len(students)
4
>>>

  

    5.2 count(value),count为list对象方法

    计算list中value出现的次数,value为空报错

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.count("wy") # 显示students中"wy"出现的次数
1
>>> students.count(1)
0
>>> students.count()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-10-7358caf689b5> in <module>
1 students = []
----> 2students.count() TypeError: count() takes exactly one argument (0 given)

  

    5.3 index(value),index为list对象方法

    计算list中value值第一次出现的索引位置,value为空或者不存在都将报错

>>> students = ['wy', 'czy', 'xjj', 'xzf']
>>> students.index("xjj")
2 >>> students.index(123) # students中没有123,直接报错
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-14-42a3ab695f28> in <module>
1 students = ['wy', 'czy', 'xjj', 'xzf']
2 print(students.index("xjj"))
----> 3print(students.index(123)) ValueError: 123 is not in list >>> students.index() # index参数为空,直接报错
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-15-c99f5e25284d> in <module>
1 students = ['wy', 'czy', 'xjj', 'xzf']
2 print(students.index("xjj"))
----> 3print(students.index()) TypeError: index() takes at least 1 argument (0 given)

  

    5.4 sort(),sort为list对象方法

    对list元素排序,默认为从小到大,加入参数reverse=True为反向排序

>>> num = [1, 4, 3, 7, 5]
>>> num.sort()
>>> num
[1, 3, 4, 5, 7]
>>> num.sort(reverse = 1) # reverse参数也可以写成True(True转为数字即为1)
>>> num
[7, 5, 4, 3, 1]
>>>

    5.6 reverse(),reverse为list对象方法

    对list元素反转

>>> num = [1, 4, 3, 7, 5]
>>> num.reverse()
>>> num
[5, 7, 3, 4, 1]

  

  6. list嵌套

    列表中的元素可以是列表等可迭代对象,访问方式类似C语言中的多维数组(数组的数组)

>>> name = ['taibai','武藤兰','苑昊',['alex','egon',89],23]
>>> name[3][2]
89
>>> name[3][2] = "FreeBSD"
>>> name
['taibai', '武藤兰', '苑昊', ['alex', 'egon', 'FreeBSD'], 23]
>>> name[3][1][-1]
'n'
>>> name[3][1] = 500
>>> name
['taibai', '武藤兰', '苑昊', ['alex', 500, 'FreeBSD'], 23]
>>> name[3][0].upper()
'ALEX'

二、tuple(列表)

  tuple和list类似,也是是Python里的一种容器,里面可以存储多个任何类型的数据。但tuple里的元素在初始化以后固定,不可以做任何的修改,否则报错

基础_04_list and tuple的更多相关文章

  1. 【Python】 [基础] list和tuple

    list 类型,这不就是js里的数组吗,,最后一个元素索引是 -1list是一个可变的有序的表,#追加.append('admin')#插入.insert(1,'admin')#删除末尾元素.pop( ...

  2. python基础(str,list,tuple)

    python是一门动态解释型的强类型定义语言(先编译后解释) 动态类型语言 动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来 解释型 程 ...

  3. python基础——list和tuple(列表和元组)

    1.list的定义,插入insert,append,按位置索引. >>> name = ['Macal','lily','lucy','bob']  --初始化>>> ...

  4. python3基础: 元组tuple、 列表list、 字典dict、集合set。 迭代器、生成器

    一.元组: tuple Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组 tup2 = (111, 22, 33, ...

  5. Python基础(list和tuple)可变集合和‘不可变’集合

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  6. python学习笔记(二)python基础知识(list,tuple,dict,set)

    1. list\tuple\dict\set d={} l=[] t=() s=set() print(type(l)) print(type(d)) print(type(t)) print(typ ...

  7. python3【基础】-list&tuple

    一.list概述 list (列表)是python中最常用的数据类型之一,通过列表可以对数据实现最方便的存储,修改等操作.在python3中,list支持如下方法: Help on class lis ...

  8. Python基础 List和Tuple类型

    python 创建list python 内置一种数据类型是列表: 列表是一种有序的集合,可以随时添加和 删除其中的元素,list 中的元素是按照顺序排列的.构建list 直接用 [ ], list ...

  9. Python基础-list,tuple,dict,set常用方法及区别

    1,列表list 列表定义方式 lis1=[1,2,3,4]#一维数组 lis2=[1,2,3,[4,5,6]]#二维数组 依次多有多维数据,套几层就是几维数组 列表的取值可以通过下标来,下标都是从0 ...

随机推荐

  1. Linux平台下C++使用JsonCPP解析Json字符串

    JsonCPP安装 安装 scons 下载地址: http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/ ...

  2. 一、centos7更改网卡名称eth0

    异步赠书:10月Python畅销书升级 [线路图]人工智能到底学什么?! 程序员10月书讯 每周荐书(京东篇):618取胜之道.质量保障.技术解密) Centos7更改网卡名称Eth0 标签: Cen ...

  3. Linux find命令:在目录中查找文件(超详解)

    find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...

  4. 【C语言】已知三角形三边长,求三角形面积

    一. 数学基础: 已知三角形的三边,计算三角形面积,需要用到海伦公式: 即p=(a+b+c)/2 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...

  5. winform学习(2)窗体属性

    窗体也属于控件(controls) 主窗体:在Main函数中创建的窗体,当关闭主窗体时,整个程序也就关闭了. 如何打开控件属性面板: ①在该控件上单击鼠标右键--属性. ②选中该控件,按F4 窗体常用 ...

  6. winform学习(1)初识winform

    winform是Windows窗体应用程序 在窗体设计界面  单击鼠标右键--查看代码,即可转到Form1.cs的代码界面 从代码界面转到窗体设计界面的三种快捷方法:①双击解决方案资源管理器的 For ...

  7. codeforces 962F.simple cycle(tarjan/点双连通分量)

    题目连接:http://codeforces.com/contest/962/problem/F 题目大意是定义一个simple cycle为从一个节点开始绕环走一遍能经过simple cycle内任 ...

  8. Mongodb学习笔记(四)管理

    一.数据导出.导入 数据导入:mongoexport ./mongoimport -d 数据库 -c 集合 文件名 数据导出:mongoimport 参数说明: -d:指明使用的库,如text -c: ...

  9. Chrome下ifame父窗口调用子窗口的问题

    function changeMenu(menu_id){ frames[0].changeMenu(menu_id); } https://blog.csdn.net/caohaicheng/art ...

  10. Codeforces Round #624 (Div. 3) A. Add Odd or Subtract Even(水题)

    You are given two positive integers aa and bb . In one move, you can change aa in the following way: ...