一、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. Python_内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  2. C++-LUOGU2938- [USACO09FEB]股票市场Stock Market-[完全背包]

    开O2,开O2,开O2 重要的事情说三遍 #include <set> #include <map> #include <cmath> #include <q ...

  3. span标签间距

    最近在做的一个项目里面碰到这么一个问题: <p> <span>块1</span> <span>块2</span> </p> 在“ ...

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

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

  5. 熬最深的夜喝最劣的酒————浅谈生成器(generator)

    测试(test)def s(): print("stup1") n = "第一步" yield n # 类似于return 但是又不同于 赖克宝,剁一下,跳一下 ...

  6. Win10 系统运行VsCode出现白屏的问题(亲测有效)

    Win10 系统运行VsCode出现白屏的问题(亲测有效) 新买的本本,昨天VScode运行还正常,今天打开一直白屏,什么都没有,只有几个小格格,也不是卡死的那种,可以轻松关闭, 刚开始以为版本问题, ...

  7. Palindromes _easy version 题解

    “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串.请写一个程序判断读入的字符串是否是“回文”. Input输入包含多个测试实例,输入数据的第一行是一个正整数n ...

  8. 6_13古代象形符号(UVa1103)<图的连通块的应用>

    给出一幅黑白图像,每行相邻的四个点压缩成一个十六进制的字符.然后还有题中图示的6中古老的字符,按字母表顺序输出这些字符的标号. 输出说明:For each test case, display its ...

  9. C#类和对象的理解

    C#是面向对象的开发语言 类:抽象的(模板)不占用内存空间 对象:具体的(真实存在事物)占用内存空间

  10. MyBatis-Spring整合之方式4

    直接删除Mybatis的配置文件,修改Beans.xml文件的sqlSessionFactory的参数内容,如下: <!--配置sqlSessionFactory--> <bean ...