一、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. 概念理解_L2范数(欧几里得范数)

    L1范数 L1范数是指向量中各个元素绝对值之和 L2范数 L2范数.欧几里得范数一些概念. 首先,明确一点,常用到的几个概念,含义相同. 欧几里得范数(Euclidean norm) ==欧式长度 = ...

  2. BeautifulReport报告

    Project description BeautifulReport 一个基于unittest.TestResult模块实现的测试用例模板, 可把测试中的结果通过BeautifulReport整合成 ...

  3. [linux] Ubuntu18.04 安装mysql密码不对

    安装 安装过程可以说是非常简单了 sudo apt-get install mysql-server 然后看看有没有启动成功 systemctl status mysql 看到状态是 running就 ...

  4. NOIP2016普及组解题报告

    概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...

  5. Makefile中的wildcard/notdir/patsubst

    在Makefile规则中,通配符会被自动展开. 但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTE ...

  6. 剑指offer面试题30.包含min函数的栈

    一开始写的垃圾代码,push和pop都是O(N) class Solution { public: vector<int> vec; int min_val=INT_MAX,min_cnt ...

  7. 解决Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的问题

    npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

  8. C语言数据结构——第三章 栈和队列

    三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...

  9. 忘记win8开机密码的清除方法

    1.进PE 2.打开计算机,进入 C:\Windows\System32 目录下 3.找到 magnify.exe 改名为 mangify1.exe .将 cmd.exe 改名为 magnify.ex ...

  10. Object 反射 List

    public static object DeserializeModel<T>(object dataModel) { Type type = typeof(T); Object ent ...