python学习之数据类型(List、tuple)

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]是'字符串',那么它仍保留字符串的属性,比如增删改查操作不会对其本身进行更改。

3.6 元组

v = (11,22,33,'asd','汉字')

元组就是不可变的列表,又叫制度列表,属性特征与字符串相似,里边可以存放任何类型的元素。

1.这里元组的不可变的意思是⼦元素不可变,⽽子元素内部的⼦元素是可以变, 这取决于子元素是否是可变对象.

2.元组中如果只有⼀个元素,⼀定要添加⼀个逗号, 否则就不是元组,而是元素本身,例如(1)表示int 1,(1+2)表示int 3,如果是空元组一定是 tu = tuple(),如果是一个元素的元组一定要在元素后边加一个逗号, 例子:tu =(11,)。

3.元组的功能

元组也有索引和切片,跟列表和字符串一样

###一些常用的功能
cmp(tuple1,tuple2)  比较两个元组元素
len()  计算元组元素的个数
max()  返回元组中元素的最大值
min()  返回元组中元素的最小值
tuple(seq) 将列表转换为元组
tu[1:5:2]  tu[-1]  tu[1:3] #切片

4.for循环遍历元组

tu = (11,22,33,44,55,)
for el in tu :
    print(el)

5.元素也可以嵌套

tu = (1,2,3,(11,22,[111,222,333]),'哈哈哈')

3.7 range

​ range可以帮我们获取到⼀组数据,通过for循环能够获取到这些数据。range本身不能单独使用,可以用for和list列表打开。

注意:s = range(1,10)

​ print(s)

​ 在python2.0中,是以列表的形式输出;在python3.0中输出rang(1,10)

for i in range(100) : #打印1--99,取不到100
    print(i)

还可以设置起始值以及步长

for i in range(1,25,2):
    print(i)

range(边界) 从0到边界值,取不到边界值

range(start,end) 从start到end结束,不能取到end

range(start,end,step) 从start到end结束,步长是step

tu = (11,22,33,44,55,)
for i in tu :
    print(i)
for i in range(len(tu)) :
    print(tu[i])

​ 以上两条命令输出的结果相同,但是前者是直接输出元素,而后者是通过索引输出元素。

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

猜你喜欢

转载自www.cnblogs.com/jjzz1234/p/10986885.html
今日推荐