python3 列表和元组使用方法(注意单个元素写法)

数据结构

python常用三种数据结构:列表、元组、字典

针对变量保存数据来说不能满足不同需求和存储大量的数据,python就需要有不同的数据结构来存储这些数据和满足需求

序列和索引

序列就是一组多项排序的数据,比如字符串、后面讲到的列表、元祖都属于序列

索引就是类似索引运算符,用来访问序列里面的具体数据,数据排序从做左到右,索引号从0开始,反过来右到左,就是最后一个为-1,-2以此类推

使用方法也同样跟索引运算符差不多
格式:【start:end:step】
start:开始索引号
end:结束索引号,不包含自己
step:步长,就是间隔依次访问,默认步长1

'''列表举例,列表用[]表示'''
a = ['abd',10,'我学python',100000,'aaaa']
print(a[1])
print(a[-1])
print(a[0:2])
print(a[0:4:2])
print(a[-2:4:2])
'''记住规则:开始为0,结束不包含,步长,冒号隔开'''

结果:

10
aaaa
['abd', 10]
['abd', '我学python']
[100000]

列表

创建列表

格式【】方括号,数据以逗号隔开
2种方式:【】,内置函数list()

a = [111,'abc','ss10']
b = list((111,'abc','ss10'))
'''函数后面是括号,再加一个括号代表是一个整体的参数\
整体里面分多个,因为函数参数只能带一个,这个在 join函数也很常用'''
print(a)
print(type(a))
print(b)
print(type(b))

结果

[111, 'abc', 'ss10']
<class 'list'>
[111, 'abc', 'ss10']
<class 'list'>

增加列表元素

第一种

格式:调用append()方法,函数方法调用以点跟参数,数据默认加入到最后
append()可以传入单值,也可以是一个列表或者元祖等,以一个整体加入,从而形成列表的嵌套用法

a = [111,'abc','ss10']
a.append('list')
a.append([10,11,12])
print(a)

结果

[111, 'abc', 'ss10', 'list', [10, 11, 12]]

第二种

上面【10,11,12】变成了一个列表嵌套到列表中了,如果不想把变成一个整体添加,可以使用extend()方法变成单个值追加

a = [111,'abc','ss10']
a.extend((10,11,12))
a.extend([10,11,12])
print(a)
'''没有区分整体是什么形式,只要代表一个整体我都按照里面单个值追加'''`在这里插入代码片`

结果:

[111, 'abc', 'ss10', 10, 11, 12, 10, 11, 12]

第三种

需要把值插入到想要的索引号位置
格式:insert(索引号,值)

a = [111,'abc','ss10']
a.insert(2,(10,11,12))
print(a)

结果

[111, 'abc', (10, 11, 12), 'ss10']

删除列表元素

第一种

格式:使用del 语句,不是函数没有括号,语句是一段可执行代码,循环语句 if for语句 break 语句等
del 语句可以删除列表,变量,还有可以删除一个范围
del 删除的是引用关系,不是具体的数据,前面文章讲过内存存储机制

a = [111,'abc','ss10']
b = a
del a
del b[0]
'''删除索引0值'''
print(b)
'''b的值还是存在的,del删的只是内存引用关系'''
print(a)
'''报错,因为a变量名称已经被删除了'''

结果

['abc', 'ss10']
Traceback (most recent call last):
  File "D:/OneDrive/python/疯狂讲义/第二章.py", line 47, in <module>
    print(a)
NameError: name 'a' is not defined

第二种

格式:调用remove()方式,只删除第一个匹配到的,没有匹配到就直接报错

a = [111,'abc','ss10',111]
a.remove(111)
a.remove(111)
'''删除2次才能把2个111删除'''
# a.remove(222)
#报错
print(a)

结果

['abc', 'ss10']

第三种

格式:调用clear()方法,不接受参数,只清空列表元素

a = [111,'abc','ss10',111]
a.clear()
print(a)

结果

[]

修改列表元素

直接根据索引号赋值=替换

a = [111,'abc','ss10',111]
a[0] = 'aaa'
a[-1] = 'bbb'
print(a)

结果

['aaa', 'abc', 'ss10', 'bbb']

同样该方法还可以删除元素

a = [111,'abc','ss10',111]
a[0:3] = []
'''删除索引0-2的值'''
print(a)

结果

[111]

同样该方法还可以插入元素

a = [111,'abc','ss10',111]
a[2:2] = [222]
'''起始位和结束为一样'''
print(a)

结果

[111, 'abc', 222, 'ss10', 111]

使用多索引号需要把值变成列表,列表值后面逗号

a = [111,'abc','ss10',111]
a[0:3] = ['aaaaa',]
print(a)

结果

['aaaaa', 111]

不然单个值就会被拆分单个

a = [111,'abc','ss10',111]
a[0:3] = 'aaaaa'
print(a)

#结果
['a', 'a', 'a', 'a', 'a', 111]

其他常用方法

print(dir(list))
查看全部使用方法
append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

count(),统计某个元素有几个

a = [111,'abc','ss10',111]
print(a.count(111))

#结果
2

index(),元素的索引号
格式:index(元素,开始索引号,结束索引号)

a = [111,'abc','ss10',111]
print(a.index(111))
print(a.index(111,1))

#结果
0
3

pop(),移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
格式:list.pop((索引号))

a = [111,'abc','ss10',111]
print(a.pop(-2))

#结果
ss10

reverse(),元素相反表示

a = [111,'abc','ss10',222]
a.reverse()
print(a)

#结果
[222, 'ss10', 'abc', 111]

sort(),对列表元素排序,默认根据字符编码号排序,不支持字符串和整数一个列表排序

a = [111,222,222,111]
b = ['aa','aaa','abc']
a.sort()
b.sort()
print(a)
print(b)

结果

[111, 111, 222, 222]
['aa', 'aaa', 'abc']

元组

格式()方括号,数据以逗号隔开
2种方式:(),内置函数tuple()

a = (111,'abc','ss10')
b = tuple((111,'abc','ss10'))
print(a)
print(type(a))
print(b)
print(type(b))

结果

(111, 'abc', 'ss10')
<class 'tuple'>
(111, 'abc', 'ss10')
<class 'tuple'>

可以看到方法跟列表一样,只是列表【】换成元组的()

列表和元组的区别

列表的元素是可以改变的,相当于变量
元组的元素不可改变,相当于常量
针对不同需求而选择,比如名字可以设置成元组类型,不允许程序更改
其他方法跟列表一样通用

列表和元组转换

转换成列表使用内置函数list()
转换成元组使用内置函数tuple()

a = (111,'abc','ss10')
b = range(1,10)
'''使用rang函数从1-9'''
b_list = list(b)
a_list = list(a)
print(a_list)
print(type(a_list))
print(b_list)

结果

[111, 'abc', 'ss10']
<class 'list'>
[1, 2, 3, 4, 5, 6, 7, 8, 9]

相反的方法,列表同样转换成元组

列表和元组加号+,拼接

列表只能跟列表相加
元组只能跟元组相加
列表+元组就会报错

a = (111,'abc','ss10')
b = (222,'def',100)
print(a+b)

a = [111,'abc','ss10']
b = [222,'def',100]
print(a+b)

结果

(111, 'abc', 'ss10', 222, 'def', 100)
[111, 'abc', 'ss10', 222, 'def', 100]

列表和元组*,打印倍数

a = (111,'abc','ss10')
print(a*3)

#结果
(111, 'abc', 'ss10', 111, 'abc', 'ss10', 111, 'abc', 'ss10')

一个列表或元组的元素写法

a = 'aabb'
b = ('aabb')
c = ['aabb',]
print(type(a))
print(type(b))
print(type(c))

结果

<class 'str'>
<class 'str'>
<class 'list'>

b不是一个元组,元组和列表需要元素后面加上逗号,代表后面是空,一个元素就代表是字符串

发布了37 篇原创文章 · 获赞 14 · 访问量 1376

猜你喜欢

转载自blog.csdn.net/yangshihuz/article/details/103997164