列表、元组及其常用函数

列表、元组及其常用函数

  • 四种容器型数据类型:列表、字典、元组、集合

  • while 1比while True效率高(True还得转化成1)

  • "字符串.操作"由于不会对字符串本身进行修改,因此需要使用"x=字符串.操作"的形式生成新的字符串;相反,列表相关的insert, append, extend, remove, clear命令均需要使用"列表.操作"的形式直接对列表本身进行修改,而不能使用"x=列表.操作"的形式(此时x返回值None)。两个特例:x=列表.pop(),此时x表示被删除的元素;del命令则需要使用"del 列表[]"形式。

  • 列表的增(insert, append, extend)、删(remove, clear, pop; del)、改([] [:] [::])、查([] [:] [::] for)

  • int命令可以自动删除数字型字符串两侧的空格(但是不能删字符串中间的)

    a='   10   '
    print(int(a))

    输出结果:10
    a='   1  0   '
    print(int(a))

    输出结果:报错

     

列表的基本操作(索引、切片、步长)

s1=[11,22,33,44,55,66,77,88,99]
s2=s1[2:4:-1]
print(s2)

执行结果:[]
解释:若起点、终点表示的方向于步长表示的方向不一致,则切出来的列表为空
s1=[11,22,33,44,55,66,77,88,99]
s2=s1[5:100]
print(s2)

执行结果:[66, 77, 88, 99]
解释:若对列表切片,切的一侧超出范围时,则视为切到该侧的最后一个元素
s1=[11,22,33,44,55,66,77,88,99]
s2=s1[99:100]
print(s2)

执行结果:[]
解释:若对列表切片,切的两侧均超出范围时,则切出来的是空列表
s1=[11,22,33,44,55,66,77,88,99]
s2=s1[-8:8]
print(s2)

执行结果:[22, 33, 44, 55, 66, 77, 88]
解释:支持起点为负,终点为正(起点在终点左侧)的切片方式

 

列表的创建

#把字符串通过list命令转换为列表时,会自动对其进行拆分,将每个字符分别作为列表中的一个元素
x=list('abcde')
print(x)

输出结果:['a', 'b', 'c', 'd', 'e']
#数字不能直接转换成列表(数字不是可迭代对象)
x=123
print(list(x))

输出结果:报错

列表的增、删、改、查

insert:按索引号插入

insert两个参数都是必输项,否则报错

x=['a','b','c','d','e']
x.insert(2,'QQ') #第一个参数是新列表里的索引号
print(x)

输出结果:['a', 'b', 'QQ', 'c', 'd', 'e']

append:不拆解,原样追加到列表最后

x=['a','b','c','d','e']
x.append('123')
print(x)

输出结果:['a', 'b', 'c', 'd', 'e', '123']
x=['a','b','c','d','e']
x.append(['123'])
print(x)

输出结果:['a', 'b', 'c', 'd', 'e', ['123']]

extend:一次拆解后加到列表最后(迭代追加)

x=['a','b','c','d','e']
x.extend('123')
print(x)

输出结果:['a', 'b', 'c', 'd', 'e', '1', '2', '3']
x=['a','b','c','d','e']
x.extend(['123', 456, True])
print(x)

输出结果:['a', 'b', 'c', 'd', 'e', '123', 456, True]

remove:按内容删,若有重名,默认删除从左数的第一个(pop比remove更常用)

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

输出结果:['b', 'a', 'd']

clear:清除当前列表中的所有元素(仅了解)

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

输出结果:[]

pop:按索引号删

x=['a','b','c','d','e']
x.pop(1)
print(x)

输出结果:['a', 'c', 'd', 'e']
x=['a','b','c','d','e']
y=x.pop(1)
print(y) #注意:此为pop语句的特殊之处,表示的是被删除的元素

输出结果:b
x=['a','b','c','d','e']
x.pop() #注意:pop参数为空时,默认删的是最后一个
print(x)

输出结果:['a', 'b', 'c', 'd']

del:可以按照索引删,或按照切片(步长)删

del是字典和列表通用的删

注意其用法和其他不同,不是"列表.del",而是"del 列表"

x=['a','b','c','d','e']
del x[-1]
print(x)
del x[::2]
print(x)

输出结果:
['a', 'b', 'c', 'd']
['b', 'd']

注意:改无法按照内容改

按照索引改

x=['a','b','c','d','e']
x[1]=123
print(x)

输出结果:['a', 123, 'c', 'd', 'e']

按照切片改(了解):替换和被替换部分的长度不必相同

x=['a','b','c','d']
x[2:]='HELLO'
print(x)

输出结果:['a', 'b', 'H', 'E', 'L', 'L', 'O']
x=['a','b','c','d']
x[2:]=['HELLO']
print(x)

输出结果:['a', 'b', 'HELLO']

按照切片加步长改(了解):替换和被替换的部分长度必须相同,否则报错

x=['a','b','c','d','e']
x[::2]='I'
print(x)

输出结果:报错!
x=['a','b','c','d','e']
x[::2]='IJK'
print(x)

输出结果:['I', 'b', 'J', 'd', 'K']
x=['a','b','c','d','e']
x[::2]=['I']
print(x)

输出结果:报错!
x=['a','b','c','d','e']
x[::2]=['I','J','K']
print(x)

输出结果:['I', 'b', 'J', 'd', 'K']

可以按索引、切片、切片加步长、for循环来查

x=[1,'a',True, [2,3]]
for i in x:
  print(i)
   
输出结果:
1
a
True
[2, 3]

★★★注意查询时元素和列表的区别:

li = [1, 3, 2, "a", 4, "b", 5,"c"]
print(li[3])
print(li[3:4])
print(li[-1])
print(li[-1:])

输出结果:
a
['a']
c
['c']

元组

元组里的元素不支持增、删、改。若元组里有小列表,小列表本身不能删,但是小列表里的元素可以增、删、改。

tu = (100, '太白', True, [10, 20, 30])
del tu[3]
print(tu)

输出结果:报错!元组不支持增、删、改
tu = (100, '太白', True, [10, 20, 30])
del tu[3][1]
print(tu)

输出结果:(100, '太白', True, [10, 30])

元组的拆包

用来获取元组里的所有元素,两边元素的个数必须相等。

a,b=(1,2)
print(a,b)

输出结果:1 2

range

range本身不是列表 range在大多数情况下用于与for循环结合 range(起点, 终点, 步长),注意起点和终点适用"顾头不顾尾"原则,此外三个参数之间的分隔符是","而不是":"

range(0,5)可简写为range(5),代表0,1,2,3,4

range(1,101),代表1,2,3...100

range(100,0,-2),代表100,98,96...2

对range取切片:得到的还是range

li=range(10)
print(li[1:5])

输出结果:
range(1, 5)

猜你喜欢

转载自www.cnblogs.com/oddgod/p/10921689.html