数据类型之列表介绍

Posted achai222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型之列表介绍相关的知识,希望对你有一定的参考价值。

1、作用:列表一般用于按位置存放多个值

2、定义:列表是一个由多个数据组成的数据结构

l=[1,1.2,a] 
# 相当于l=list([1,1.2,‘a‘])
print(type(l))
# <class ‘list‘>

 

 

3、类型转换: 能够被for循环遍历的类型都可以使用list()转成列表

res=list(hello)
print(res)
s = "hello"
l = []
for i in s:
    l.append(i)
print(l)

 

转化的方法为通过for循环遍历添加

4、内置方法

优先掌握的操作:

1、按索引存取值(正向存取+反向存取):即可以取也可以改

l=[111,egon,hello]
# 正向取值
print(l[0])
# 反向取值
print(l[-1])
# 可以取也可以改:索引存在则修改对应的值
l[0]=222
print(l)
# 无论是取值操作还是赋值操作:索引不存在则报错
l[3]=333

 

 

2、切片(顾头不顾尾,步长)

?
l = [111, egon, hello, a, b, c, d, [1, 2, 3]]
print(l[0:3])
# [111, ‘egon‘, ‘hello‘]
print(l[0:5:2]) # 取索引为0 2 4的值
# [111, ‘hello‘, ‘b‘]
?
print(l[0:len(l)])
# [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1, 2, 3]]
print(l[:])
# [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1, 2, 3]]
new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
print(id(l))
# 2277356332168
print(id(new_l))
# 2277356332936
?
l[-1][0]=1111111        # 修改原列表,验证切片与浅拷贝类似
print(l)
# [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1111111, 2, 3]]
print(new_l)
# [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1111111, 2, 3]]
print(l[::-1])
# [[1111111, 2, 3], ‘d‘, ‘c‘, ‘b‘, ‘a‘, ‘hello‘, ‘egon‘, 111]

 

 

 

 

3、长度

 

print(len([1, 2, 3]))
# 3

 

 

4、成员运算in和not in

print(aaa in [aaa, 1, 2])
# True
print(1 in [aaa, 1, 2])
# True

 

 

 

5、往列表中添加值

5.1 追加

在列表尾部添加数据

l=[111,egon,hello]
l.append(3333)
l.append(4444)
print(l)
# l=[111,‘egon‘,‘hello‘,3333,4444]

 

 

5.2、插入值

按照填入的索引,在对应的位置插入数据

l=[111,egon,hello]
l.insert(0,alex)
print(l)
# [‘alex‘, 111, ‘egon‘, ‘hello‘]

 

 

5.3、extend添加值

extend可以将新列表内的数据添加到原列表

 

如果我们想将一个新的列表内的数据添加到原列表,使用append无法实现,如下列代码

new_l = [1,2,3]
l = [111, egon, hello]
l.append(new_l)
print(l)
# [111, ‘egon‘, ‘hello‘, [1, 2, 3]]

 

我们可以使用extend方法

new_l = [1, 2, 3]
l = [111, egon, hello]
for item in new_l:
    l.append(item)
print(l)
# [111, ‘egon‘, ‘hello‘, 1, 2, 3]
# 实现了功能
l.extend(abc)
print(l)
# [111, ‘egon‘, ‘hello‘, 1, 2, 3, ‘a‘, ‘b‘, ‘c‘]

 

 

6、删除

方式一:通用的删除方法,只是单纯的删除、没有返回值

l = [111, egon, hello]
del l[1]
print(l)
x = del l[1] # 查看返回值,抛出异常,不支持赋值语法

 

 

方式二:list.pop()根据索引删除,会返回删除的值

不输入索引时默认删除最后一个数据

l = [111, egon, hello, 55]
l.pop()  # 不指定索引默认删除最后一个
l.pop()
print(l)
# [111, ‘egon‘]
res = l.pop(1)
print(l)
# [111]
print(res)
# egon

 

 

 

方式三:l.remove()根据元素删除,返回None

l = [111, egon, [1,2,3],hello]
l.remove([1,2,3])
print(l)
# [111, ‘egon‘, ‘hello‘]
res=l.remove(egon)        # 返回值为None
print(res) 
# None

 

 

7、循环与列表

不要在循环中对列表进行删除操作!!!!

l=[1,aaa,bbb]
for x in l:
    l.pop(1)
    print(x)

 

 

需要掌握操作

 

l = [1, ‘aaa‘, ‘bbb‘,‘aaa‘,‘aaa‘]

1、l.count()

数输入内容在列表中出现的次数

print(l.count(aaa))

 

2、l.index()

查找方法,查找输入内容第一次出现的位置的索引

print(l.index(aaa))
print(l.index(aaaaaaaaa)) # 找不到报错

 

 

3、l.clear()

清空列表

l.clear()
print(l)

 

 

4、l.reverse():

注意: reverse不是排序后翻转,是将列表直接倒过来

l = [1, egon,alex,lxx]
l.reverse()
print(l)

 

 

5、l.sort(): 列表内元素必须是同种类型才可以排序

l=[11,-3,9,2,3.1]
l.sort() # 默认从小到大排,称之为升序
l.sort(reverse=True) # 从大到小排,设置为降序
print(l)
?
l=[11,a,12]  # 不同类型报错!
l.sort()
?
l=[c,e,a]     # 按ascii码排序,A<a
l.sort()
print(l)

 

了解:字符串可以比大小,按照对应的位置的字符依次pk 字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的

print(a>b)
# False
?
print(abz>abcdefg)
# True

 

了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型

l1=[1,abc,zaa]
l2=[1,abc,zb]
?
print(l1 < l2)
# True

 

 

 

 

 

补充

1、队列:FIFO,先进先出

l=[]
?
# 入队操作
?
l.append(first)
l.append(second)
l.append(third)
print(l)
# [‘first‘, ‘second‘, ‘third‘]
?
?
# 出队操作
?
print(l.pop(0))
# first
?
print(l.pop(0))
# second
?
print(l.pop(0))
# third

 

 

2、堆栈:LIFO,后进先出

 

l=[]
?
# 入栈操作
?
l.append(first)
l.append(second)
l.append(third)
print(l)
# [‘first‘, ‘second‘, ‘third‘]
?
# 出队操作
?
print(l.pop())
# third
?
print(l.pop())
# second
?
print(l.pop())
# first

 

 

 

 

以上是关于数据类型之列表介绍的主要内容,如果未能解决你的问题,请参考以下文章

python基础之数据类型的比较

python3从入门到精通之数据类型,布尔类型介绍

GraphQL 响应类型/片段之争

在片段中创建自定义列表视图时出错。必需的活动,找到的片段

redis之五大数据类型介绍

在片段中创建自定义列表视图时出错所需活动,找到片段