3.5 列表

3.5.1 列表的介绍

​ 列表是python的基础数据类型之⼀,其他编程语言也有类似的数据类型. 比如JS中的数组, java中的数组等等。它是以[ ]括起来, 每个元素⽤' , '隔开而且可以存放各种数据类型。

​ 简而言之,就是能装对象的对象。

​ 列表相比较于字符串,不仅可以存放不同的数据类型,而且还可以存放大量的数据。32位python可以存放536870912个元素, 64位可以存放:1152921504606846975个元素。列表是有序的,有索引,可以切片方便取值。

3.5.2 索引与切片

索引:与字符串一样

v = [11,22,33,44,"hahah"]
vla1 = v[2] #第3个元素为int类型,通过索引进行取值
vla2 = v[4] #第5个元素为字符类型
vla3 = v[4][1:3] #索引到元素的元素

切片:与字符串一样

vla4 = v[0:3:2]  #范围+步长,依然是顾头不顾尾

列表的切片得到的还是切片

3.5.3 列表的增删改查

与字符串不同的是,列表可以对元素进行了增删改查操作,可以直接在原来的数据上进行操作。

1.新增

在列表尾部添加新的元素,语法: .append()

v = [11,22,33,44,55,"haha"]
v.append("jjzz") #在列表尾部添加新的元素(修改了列表)
print(v)
2.插入

根据索引在列表中插入元素,语法:.insert(索引值,'元素')

v = [11,22,33,44,"haha"]
v.insert(3,"插入")
print(v)

注意:在非尾部插入元素时,因为插入元素后会使该位置之后的所有元素都要变换位置,所以效率不如append高。

3.迭代添加

.extend('str'),会把str一个一个的迭代添加进列表

v = [11,22,33,44,"haha"]
v.extend('lol')
print(v) # v = [11, 22, 33, 44, 'haha', 'l', 'o', 'l']

如果把str作为一个元素添加到列表,语法为:.extend(['str'])

v = [11,22,33,44,"haha"]
v.extend(['lol','attack'])
print(v) #[11, 22, 33, 44, 'haha', 'lol', 'attack']
4.列表的合并
list1 +  list2
l1 = [1,2,3]
l2 = ['a','b','c']
l3 = l1 + l2
print(l3)
#输出
[1,2,3,'a','b','c']

列表的合并后得到的是新的列表

5.删除
函数 描述
.pop() 默认弹出最后一个元素,也可以通过输入索引删除准确的元素,返回被删除的值
.remove(元素) 必须要输入要弹出的元素,可以用索引代替,只能删除一个元素>;如果元素重复,从左往右删除第一个
.clear() 清空所有元素
del list[] 删除列表中索引所在的元素,可以是切片;是python的关键字,是指一种垃圾回收机制
v = [11,22,33,44,55,"hahah"]
a = v.pop() #默认弹出最后一个元素
print(v,a)
v.remove(11) #弹谁写谁,输出[22, 33, 44, 55, 'hahah']
print(v)
v.clear()
print(v) #输出[] del v #删除整个列表
del v[2] #输出[11, 22, 44, 55, 'hahah']
del v[0:3] #输出[44,55,'hahah']
del v[0:4:2] #输出[22, 44, 55, 'hahah']
print(v)
6.修改与替换

语法:变量名[索引] = 元素

v = [11,22,33,44,55,"hahah"]
v[-3] = 'jjzz'
print(v) #输出[11, 22, 33, 'jjzz', 55, 'hahah']

切片修改

变量名[ start : end : step ] = 元素

注意:如果步长是1,那么添加元素比较随意,迭代添加元素进去

	   如果步长不是1,那么元素迭代后的个数一定要匹配,不然会报错
v = [11,22,33,44,55,"hahah"]
v[2:4] = "tihuan" #把大于等于2小于4的范围内的元素通过迭代添加到列表,此时列表元素会增加
v[2:4] = ["替换","wan","shishi"] #把大于等于2小于4的范围内的列表的元素替换掉
v[0:4:2] = ["替换","wan"] #不常用

那么如果上述列表中用 v .[-1 :-4:-1] = 'lalalalala' 进行修改时呢?

​ 报错提示超范围,原因是因为内存向下可以申请内存,但是向上不能申请内存。

7. for循环&倒叙输出
v = [11,22,33,44,"hahah"]
for xh in v:
print(xh,end=" ")
for dx in v.__reversed__() :#使用函数倒叙输出
print(dx,end=" ")
v.reverse() #使用的是功能,reversed()返回的并不是列表,是一个迭代器
print(v)

reversed与reverse区别前者是内置函数,后者是列表、字典的方法,前者返回一个新列表

8.通用操作

.count('元素') -- 》计数

.sort() --》排序,要求列表的元素尽量是数字

.sort(reverse = True) --》倒序排序

.reverse() --》反转

len() --》长度

9.列表的嵌套
v = [11,'adss','字符串',[11,22,33,[1,2,3,4]],('as','ds')]
print(v[3][3][1])

嵌套的元素的元素仍保留其属性特征,比如v[2]是'字符串',那么它仍保留字符串的属性,比如增删改查操作不会对其本身进行更改。

10.join的使用

语法:'添加的元素'.join(列表)

li = {'德玛西亚','皇子','赵信','女警',}
s = '_'.join(li)
print(s)
#输出
赵信_女警_德玛西亚_皇子
11.列表与字符串的转换

list => str str.join(list)

str => list str.split()

引用:https://www.cnblogs.com/guobaoyuan/p/9815514.html

python学习之数据类型(List)的更多相关文章

  1. python学习6—数据类型之集合与字符串格式化

    python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...

  2. python学习3—数据类型之整型、字符串和布尔值

    python学习3-数据类型之整型.字符串和布尔值 数据类型 python3支持的数据类型共有6种: 1 Number 2 String 3 List 4 Tuple 5 Set 6 Dictiona ...

  3. Python学习 之 数据类型(邹琪鲜 milo)

    1.Python中的数据类型:数字.字符串.列表.元组.字典 2.数字类型包括整型.长整型.浮点型.复数型 type(number):获取number的数据类型 整型(int):范围:-2,147,4 ...

  4. Python学习之数据类型

    整数 Python可以处理任意大小的整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如: ...

  5. python学习:数据类型

    python有两种索引方式.一种从左至右,下标从0开始:一种从右至左,下标从-1开始. python有六种数据类型: 不可变数据(四个):Number(数字).String(字符串).Tuple(元组 ...

  6. python学习Day7 数据类型的转换,字符编码演变历程

    一.数据类型的转换 1.1.1.字符转列表:lst1 = str.split(默认空格,也可依据指定字符分界),若无分界字符,就没法拆分,这时可以直接放进list转成列表 ----> s1 = ...

  7. python学习笔记--数据类型

    Life is short, You need Python! 霸气的口号! 今天我也开始学python了,毕竟不懂后端的前端不是好前端.之前有过‘世界上最好的语言’和JavaScript的学习经验. ...

  8. python学习2——数据类型

    1. python是强类型 动态类型的语言,动态类型表明它可以在声明变量的时候,不必指定数据类型,强类型规定了它不能容忍隐式类型转换 2. python中的不可变类型有:int,string,tupl ...

  9. [python学习笔记] 数据类型与语法

    数据类型 数值型 int 整形 没有long类型,可以代表任意大小的整数. type(1) -> int float 浮点数 也没有double类型 type(1.2) -> float ...

随机推荐

  1. Mac的MySQL无法启动的原因

    一.由于Mac OS X的升级或其他原因可能会导致一个错误: Warning:The /usr/local/mysql/data directory is not owned by the 'mysq ...

  2. js 代码位置不同,导致随着点击函数执行次数累加

    每个人书写代码的习惯都不同吃,思想也都不一样,但在工作中为了减少工作量与时间,难免遇到要用别人写的代码.这次在使用同事的代码中,偶然发现的问题,因为js不好,所以一眼也没发现问题所在,查了查网上才知道 ...

  3. 【51nod1220】约数之和

    题目 d(k)表示k的所有约数的和.d(6) = 1 + 2 + 3 + 6 = 12. 定义S(N) = ∑1<=i<=N ∑1<=j<=N d(i*j). 例如:S(3) ...

  4. 【leetcode】745. Prefix and Suffix Search

    题目如下: Given many words, words[i] has weight i. Design a class WordFilter that supports one function, ...

  5. 【leetcode】1247. Minimum Swaps to Make Strings Equal

    题目如下: You are given two strings s1 and s2 of equal length consisting of letters "x" and &q ...

  6. Release和Debug的区别

    Debug与Release版本的区别 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug ...

  7. html页面中引入html

    我们写页面通常会遇到这种情况,一个模块很多页面都用到,那么我们为了方便就会单独写到一个页面,然后引入进去,我知道的有三种: 1.用标签<iframe></iframe> 例: ...

  8. POJ1703--Find them, Catch them(种类并查集)

    Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 32909Accepted: 10158 Description The polic ...

  9. textarea 自动高度

    textarea 自动撑开高度 var textAreaArr = document.querySelectorAll('.textarea'); for (var i = 0; i < tex ...

  10. linux工作常用命令

    修改文件后缀 如 将文件application.properties.sample改为application.properties,格式 mv  文件名称.{改前后缀,修改后的目标后缀} 定位到修改文 ...