Python学习————列表类型

一、作用:用来存多个值,并且索引的值为对应的值,按位置存放多个值

二、定义

l = [1, 1.2, 'yan', [21, 99]]

三、类型转化

但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表

res=list('hello')
print(res)

['h', 'e', 'l', 'l', 'o']
res=list({'k1':111,'k2':222,'k3':3333})
print(res)

['k1', 'k2', 'k3']

四、内置方法

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

正向取:
l = [111, 'egon', 'hello']
print(l[0])

111
反向取:
l = [111, 'egon', 'hello']
print(l[-1])

hello
可以取也可以改:索引存在则修改对应的值
l = [111, 'egon', 'hello']
l[0]=222 # 将列表的第一个值改为222
print(l)

[222, 'egon', 'hello']
无论是取值操作还是赋值操作:索引不存在则报错

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

l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[0:3])
print(l[0:5:2]) 
print(l[0:len(l)])
print(l[:])

[111, 'egon', 'hello']
[111, 'hello', 'b']
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]

new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy

msg1='hello:egon:<>:18[]==123'
msg2=msg1[:]
print(msg1,id(msg1))
print(msg2,id(msg2))

hello:egon:<>:18[]==123 2473211243232  # id 地址相同
hello:egon:<>:18[]==123 2473211243232

3、长度(len())

print(len([1, 2, 3])) # 判断字符长度

3    # 长度为3

4、成员运算in和not in

in : 判断字符是否在大字符串中
print('aaa' in ['aaa', 1, 2])  # True     
print(1 in ['aaa', 1, 2])  # True
not in :判断字符是否不在大字符串中
print(3 not in ['aaa', 1, 2]) # True
print(not 3 in ['aaa', 1, 2]) # True   # 能够使用 但不推荐 使用 not.....in....

5、往列表中添加值

5.1 追加 (.append())

从后往前加

l = [111, 'egon', 'hello']
l.append(3333)  # 将 3333 添加到列表l中 从后往前加
l.append(4444)  # 将 4444 添加到列表l中 从后往前加
print(l)

[111, 'egon', 'hello', 3333, 4444]
new_l=[1,2,3]
l=[111,'egon','hello']
l.append(new_l) # 将 new_l的值添加到 l 中
print(l)

[111, 'egon', 'hello', [1, 2, 3]]
5.2 插入值 (.insert())

根据位置插入

l = [111, 'egon', 'hello']
l.insert(0, 'alex') # 将 alex 插入列表 0 号位置
print(l)

['alex', 111, 'egon', 'hello']
5.3 extend添加值
l = [111, 'egon', 'hello']
new_l=[1,2,3]
l.extend(new_l)  将 列表 new_l 添加到列表l中 从后往前加
print(l)

[111, 'egon', 'hello', 1, 2, 3]

6、删除

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

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

[111, 'hello']

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

l = [111, 'egon', 'hello']
l.pop() # 不指定索引默认删除最后一个
l.pop(0) # 删除 第一个
print(l)

[111, 'egon']
['egon', 'hello']

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

l = [111, 'egon', [1, 2, 3], 'hello']
l.remove([1, 2, 3])
print(l)

[111, 'egon', 'hello']
l = [111, 'egon', [1, 2, 3], 'hello']
res = l.remove('egon')
print(res)  # None
print(l)

None
[111, [1, 2, 3], 'hello']
7、循环
l = [1, 'aaa', 'bbb']
for x in l:
    l.pop(1)
    print(x)

1
bbb

五、需要掌握的操作

  1. .count() 统计某个元素在列表中出现的次数
    l = [1, 'aaa', 'bbb','aaa','aaa']
    print(l.count('aaa'))
    
    3    # aaa  在列表 l 中出现3次
    
  2. .index() 打印某个元素的索引(如果找不到就会报错)
    l = [1, 'aaa', 'bbb','aaa','aaa']
    print(l.index('aaa'))
    print(l.index('aaaaaaaaa')) # 找不到报错
    
    1
    ValueError: 'aaaaaaaaa' is not in list  # 报错信息 
    
  3. .clear() 清空列表
    l = [1, 'aaa', 'bbb','aaa','aaa']
    l.clear()
    print(l)
    
    []   # 列表 l 被clear 清空
    
  4. .reverse() 将列表倒过来(不是排序)
    l = [1, 'egon','alex','lxx']
    l.reverse()
    print(l)
    
    ['lxx', 'alex', 'egon', 1]   # reverse 将列表 l 倒过来
    
  5. .sort() 列表内元素必须是同种类型才可以排序
    l = [11, -3, 9, 2, 3.1]
    l.sort()  # 默认从小到大排,称之为升序
    l.sort(reverse=True)  # 从大到小排,设置为降序
    print(l)
    
    [-3, 2, 3.1, 9, 11]
    [11, 9, 3.1, 2, -3] #.sort(reverse=True)   
    

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

print('a'>'b')	 # False  b>a   z>a 
print('abz'>'abcdefg') # 比较首个字符 如果相同比较一下个字符  大小与字符串长度无关

False
True

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

l1 = [1, 'abc', 'zaa'] # l1 < l2  比较第一个值  abc 大小相同比较第二个值 
l2 = [1, 'abc', 'zb'] # l1 'zaa' l2 'zb' 首个字符相同  比较第二个字符 a < b 所以 l2 >l1
print(l1 < l2)

True		

六、补充

1、队列:FIFO,先进先出

入队操作

l = []
l.append('first')
l.append('second')
l.append('third')
print(l)

['first', 'second', 'third']

出队操作

l = ['first', 'second', 'third']
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

first
second
third
2、堆栈:LIFO,后进先出

入栈操作

l = []
l.append('first')
l.append('second')
l.append('third')
print(l)

['first', 'second', 'third']

出队操作

l = ['first', 'second', 'third']
print(l.pop())
print(l.pop())
print(l.pop())

third
second
first
原文地址:https://www.cnblogs.com/x945669/p/12464864.html