欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

CC-Python-数据类型之list,tuple

程序员文章站 2023-01-12 23:32:42
1,list,列表 列表使用中括号[]表示,内可盛放各种数据类型如 1(整形),'abc'(字符串)等等 Ⅰ.列表的增 1、append() append是在列表最后面添加元素 2、insert() 在指定索引处插入新元素 insert(索引,新元素) 如果索引超出列表上界或下届,则在开头或结尾添加 ......

1,list,列表

列表使用中括号[]表示,内可盛放各种数据类型如  1(整形),'abc'(字符串)等等

ⅰ.列表的增

1、append()

append是在列表最后面添加元素

lis = ['a', 'b', 'c', 'd', 'e']
lis.append('f')
print(lis)

['a', 'b', 'c', 'd', 'e', 'f']

2、insert()

在指定索引处插入新元素

insert(索引,新元素)

lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(0,'a')
print(lis)

['a', 'a', 'b', 'c', 'd', 'e']

如果索引超出列表上界或下届,则在开头或结尾添加

lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(8,'a')
print(lis)

['a', 'b', 'c', 'd', 'e', 'a']

3、extend()

将可迭代对象添加进列表里

extend(可迭代对象)

s1 = 'fgh'
lis = ['a', 'b', 'c', 'd', 'e']
lis.extend(s1)
print(lis)

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

 

列表之间可以通过'+'连接,单个列表可以通过'*'复制

lis = ['a', 'b', 'c', 'd', 'e']
lis2 = ['f', 'g', 'h']
lis3 = lis + lis2
print(lis3)

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
s1 = ['a']
s2 = s1 * 5
print(s2)

['a', 'a', 'a', 'a', 'a']

ⅱ.列表的删

1、remove

remove按元素从左向右查找并删除找到的第一个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('c')
print(lis)

['a', 'b', 'c', 'b', 'a']

如果remove的元素不在列表里,则会报错

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('x')
print(lis)

valueerror: list.remove(x): x not in list

2、pop

pop是按照索引弹出某个元素,默认为最后一个元素,又返回值,就是弹出的那个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop()
print(s)
print(lis)

a
['a', 'b', 'c', 'c', 'b']
lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop(2)
print(s)
print(lis)

c
['a', 'b', 'c', 'b', 'a']

3、clear

清空列表

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.clear()
print(lis)

[]

4、del

del的第一个用法是所有数据类型都有的,例如 del list1,就是在内存中删除list1这个变量

lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis
print(lis)

nameerror: name 'lis' is not defined

在操作列表时,del可以通过切片的方式来删除列表中某些元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis[0:3]
print(lis)

['c', 'b', 'a']

ⅲ.列表的改

1、通过索引修改

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0] = 'a'
print(lis)

['a', 'b', 'c', 'c', 'b', 'a']

2、迭代修改一个索引范围的元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0:3] = 'abcde'
print(lis)

['a', 'b', 'c', 'd', 'e', 'c', 'b', 'a']

ⅳ.列表的查

1、通过索引查找一个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis[2])

c

2、通过元素找索引  index

index(value,[start,[stop]])  可切片寻找

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('a'))
print(lis.index('a',1)

0
5

找不到会报错

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('d'))

valueerror: 'd' is not in list

ⅴ.列表的其他操作

1、reverse

对列表进行反转,没有返回值

lis = ['a', 'b', 'c']
lis.reverse()
print(lis)

['c', 'b', 'a']

2、sort

sort(key=none,reverse=false)

对列表进行排序,就地修改,默认升序

reverse默认为false,当reverse为true时反转变为降序

通过key进行自定义排序方式

lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort()
print(lis)

['a', 'b', 'c', 'e', 'f', 'g', 's']
lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort(reverse=true)
print(lis)

['s', 'g', 'f', 'e', 'c', 'b', 'a']

3、count

计数,统计某个元素在列表中出现的次数

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.count('a'))

2

4、join

使用前提:列表中的元素全是字符串类型

用法:  str.join(list)

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print('_'.join(lis))

a_b_c_c_b_a

2,tuple,元组

由于元组不可修改,所以只有查一个用法

用法与列表的查一致

 

但值得注意的是,如果元素里嵌套一个可更改的类型如列表,虽然元组不可变,但是里面嵌套的列表是可以改变的

tu = ('a', 's', ['a','b','c'], 'f')
tu[2].append('d')
print(tu)

('a', 's', ['a', 'b', 'c', 'd'], 'f')

原因是:元组不可改指的是元组元素的内存地址不可以改变,例如,假如上述元组元素'a'在内存中的地址是123456,而元素列表的内存地址是654321,修改列表是修改了内存地址654321内的数据,而不是修改了这个元素指向的地址,但是要修改一个元素如令tu[0] = 'c',是将元组的第一个元素地址指向了新的地址(字符串'c'在内存中的地址假设111111),改变了原有指向123456,是错误的