Python基础Day4

一、列表

①列表list是基础数据类型之一

②列表可以存储大量数据

③列表可索引、可切片、可加步长

④其他语言中也有列表的概念:JS 数组

 

列表默认存4个值,扩展的话会扩展一倍,即4,8,16... 

 

二、列表的索引、切片、切片+步长

①列表的索引

Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[0])
print(Li[-1])
print(Li[3])

# 结果
a
(111, 222, 333)
[1, 2, 3]

 

②列表的切片

Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[1:3])
print(Li[:5])
print(Li[-4:])

# 结果
[100, True]
['a', 100, True, [1, 2, 3], {'name': 'xiaoming', 'age': 18}]
[True, [1, 2, 3], {'name': 'xiaoming', 'age': 18}, (111, 222, 333)]

 

③列表的切片+步长

Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[::2])
print(Li[-1:-5:-2])
print(Li[-1:1:-2])


# 结果
['a', True, {'name': 'xiaoming', 'age': 18}]
[(111, 222, 333), [1, 2, 3]]
[(111, 222, 333), [1, 2, 3]]

 

三、列表的增删该查及其他方法

A.增:

append(元素)      # 在列表的末尾追加元素

Li = ['a','b','c','d','e','f','x','z']
Li.append('qqq')        # 在列表的末尾追加元素
Li.append('www')        # 在列表的末尾追加元素
print(Li)

# 结果
['a', 'b', 'c', 'd', 'e', 'f', 'x', 'z', 'qqq', 'www']

 

insert(索引,元素)      # 在指定的索引上加入元素(内容)

假如索引超过列表的长度,默认把内瑞追加到列表的最后

Li = ['a','b','c','d','e','f','x','z']
Li.insert(0,'ty')               # 在指定的索引插入内容
Li.insert(20,'gg')              # 超过列表的长度的索引,默认会追加到列表的末尾
print(Li)

# 结果
['ty', 'a', 'b', 'c', 'd', 'e', 'f', 'x', 'z', 'gg']

 

extend(元素)        # 迭代地追加,将迭代对象的最小元素逐个添加

lis = [1,2,3,4,5,6]
lis.extend('abc')
print(lis)
lis.extend(['qqq','www'])
print(lis)

# 结果
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c']
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']

 

B.删除

pop(索引)          # 通过索引删除元素,返回值是被删除的元素

lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
a = lis.pop(3)                                          # 将被删除的值存储到变量中
print(a)                
print(lis)

# 结果
4
[1, 2, 3, 5, 6, 'a', 'b', 'c', 'qqq', 'www']

 

remove(元素)        # 按元素删除,删除的列表中的第一个找到的元素

lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
lis.remove(4)                                           # 删除列表中的第一个元素是4的值
print(lis)

# 结果
[1, 2, 3, 5, 4, 'a', 'b', 'c', 'qqq', 'www']

 

clear()          # 将列表清空

lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
lis.clear()
print(lis)

# 结果
[]

 

del          # 删除

① 按索引删除

lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
del lis[3]
del lis[-1]
print(lis)

# 结果
[1, 2, 3, 5, 4, 'a', 'b', 'c', 'qqq']

 

② 按切片删除

lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
del lis[3:7]
print(lis)

del lis[-3:-1]
print(lis)

# 结果
[1, 2, 3, 'b', 'c', 'qqq', 'www']
[1, 2, 3, 'b', 'www']

 

③ 按切片+步长删除

lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
del lis[-1:2:-2]
print(lis)

del lis[3:-1:2]
print(lis)

# 结果
[1, 2, 3, 4, 6, 'b', 'qqq']
[1, 2, 3, 6, 'qqq']

 

④ 在内存级别删除整个列表

lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
del lis
print(lis)

# 结果
NameError: name 'lis' is not defined 
报错:找不到lis

 

C 修改:

① 按索引修改

lis = [1,'a',2,'b',3,'c',5,'z',8,'y']
lis[3] = 10
lis[-1] = 'x'
print(lis)

# 结果
[1, 'a', 2, 10, 3, 'c', 5, 'z', 8, 'x']

 

② 按切片修改

原理:将列表切片的部分清空,将内容迭代地添加

lis = [1,2,3,4,5,6,7,8]
lis[2:5] = 'abczxcqwe'
print(lis)

# 结果
[1, 2, 'a', 'b', 'c', 'z', 'x', 'c', 'q', 'w', 'e', 6, 7, 8]

 

③ 按切片+步长修改    # 必须一一对应修改,修改的元素不能多也不能少

lis = [1,2,3,4,5,6,7,8]
lis[3:-2:2] = 'ac'
print(lis)

# 结果
[1, 2, 3, 'a', 5, 'c', 7, 8]

 

以下的方式修改会报错:

lis = [1,2,3,4,5,6,7,8]
lis[3:-2:2] = 'a'
print(lis)

# 结果
报错ValueError: attempt to assign sequence of size 1 to extended slice of size 2

 

D.查询

① 按索引查询

lis = [1,2,3,4,5,6,7,8]
print(lis[0])
print(lis[-1])

# 结果
1
8

  

② 按切片查询

lis = [1,2,3,4,5,6,7,8]
print(lis[2:-1])
print(lis[:6])
print(lis[-5:])

# 结果
[3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6]
[4, 5, 6, 7, 8]

 

③ 按切片+步长

lis = [1,2,3,4,5,6,7,8]
print(lis[-1:-5:-1])
print(lis[3:-2:2])

# 结果
[8, 7, 6, 5]
[4, 6]

 

④ for循环查询

lis = [1,2,3,4,5,6,7,8]
for i in lis:
    print(i,end=' ')

# 结果
1 2 3 4 5 6 7 8 

 

其他方法:

len(列表)              # 获取列表的长度

count(元素)             # 查询元素在列表中出现的次数

index(元素)              # 通过元素找到该元素第一个在列表中的索引,找不到会报错

lis = [1,2,3,4,5,6,7,8]
print(len(lis))             # 获取列表的长度
print(lis.count(3))         # 查询元素在列表出现的次数
print(lis.index(3))         # 通过元素找到第一个该元素在列表中的索引

# 结果
8
1
2

 

sort()              # 排序

lis = [1,3,4,1,6,2,8,0,5]
lis.sort()
print(lis)

# 结果
[0, 1, 1, 2, 3, 4, 5, 6, 8]

 

sort(reverse = True)        # 反向排序

lis = [1,3,4,1,6,2,8,0,5]
lis.sort(reverse=True)
print(lis)

# 结果
[8, 6, 5, 4, 3, 2, 1, 1, 0]

 

reverse()            # 列表翻转

lis = [1,3,4,1,6,2,8,0,5]
lis.reverse()
print(lis)

# 结果
[5, 0, 8, 2, 6, 1, 4, 3, 1]

 

四、列表的嵌套

  可用索引 li[0][1]

  字符串是不可变的

  列表是容器,对其操作会影响到列表的数据

 

五、元组

  概念:只读列表,只允许查询,不允许增删改

  元组内有列表,可以修改列表的内容

  查询的方式与列表相同

  ① 按索引查询

  ② 按切片查询

  ③ 按切片+步长

  ④ for循环查询

 

应用场景:一些非常重要的数据,不允许所有人修改的,放在元组中

 

六、range()    # 数字列表

定义:自定制的数据范围的可迭代对象,可类比成列表

一般和for循环结合使用

 

range(start,end,步长)

for i in range(1,10,2):
    print(i,end=' ')

# 结果
1 3 5 7 9 
for i in range(10,1,-1):
    print(i, end=' ')

# 结果
10 9 8 7 6 5 4 3 2 

 

 

七、in 和 not in

判断元素是否在列表(字符串)中

s = 'abc'
print('a' in s)
print('d' in s)
print('z' not in s)

# 结果
True
False
True

 

八、课外知识

import time             # 导入time模块
time.sleep(2)           # 设置睡眠时间2秒

 

posted @ 2018-08-07 17:25  st--st  阅读(237)  评论(0编辑  收藏  举报