python基础-列表

列表中可以放任意元素

list1 = ["abc", "张三", 18, True, {"name":"李四", "age":20}, ["A", "B", "C"]]

# 列表是有序的   可以使用索引的方法获取数据

print(list1[3], type(list1[3]))    # True <class 'bool'>

print(list1[4], type(list1[4]))    # {'name': '李四', 'age': 20} <class 'dict'>

列表的增删改查

append 追加数据

list2 = [1,2,3]

# append  追加,增加在列表的最后边
list2.append(4)
print(list2.append(5))   # 输出结果:None  无效指令  输出内容为空  append是一个指令,不能打印,只能追加完成后,再打印
print(list2)   # [1, 2, 3, 4]

# 举例:
name = ["张三", "李四", "王五"]
while True:
     input_name = input("请输入要添加的学生姓名(按Q或q退出程序!):")
     if input_name.upper() == "Q":
         break
     name.append(input_name)
print(name)

insert 插入数据

# insert 在什么位置插入什么数据
name.insert(1, "insert数据")    # 插入到1索引位置
print(name)   # ['张三', 'insert数据', '李四', '王五']

extend 遍历追加

list3 = ["A", "B", "C"]

list3.extend("D")
print(list3)   # ['A', 'B', 'C', 'D']

list3.extend(["a", "b", 1, 2])
print(list3)    # ['A', 'B', 'C', 'D', 'a', 'b', 1, 2]

list3.extend(['aa', ["bb", "cc"], 11, 22])  # 只遍历第一层列表
print(list3)    # ['A', 'B', 'C', 'D', 'a', 'b', 1, 2, 'aa', ['bb', 'cc'], 11, 22]

删除

pop 删除索引位置删除数据

list4 = ['A', 'B', 'C', 1, 2, 'D']

list4.pop(-2)
print(list4)   # ['A', 'B', 'C', 1, 'D']

pop_value = list4.pop(-2)   # 有返回值
print(pop_value)   # 1
print(list4)       # ['A', 'B', 'C', 'D']

# 不指定索引值,默认删除最后一个数据
list4.pop()
print(list4)    # ['A', 'B', 'C']

# 索引越界 直接报错
list4.pop(4)    # IndexError: pop index out of range

# 列表为空,不能pop   直接报错
list5 = []
list5.pop()    # IndexError: pop from empty list

remove 移除指定元素

list6 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']

list6.remove(2)   # 删除指定数据
print(list6)    # ['A', 'B', 'C', 1, 'D']

list6.remove("C")
print(list6)      # ['A', 'B', 1, 'D']

# 列表中存在形同元素, 默认只删除从左数第一个
list6.remove("A")
print(list6)      # ['B', 1, 'A', 'A', 'D']

# 删除列表中不存在的数据   直接报错
list6.remove("G")
print(list6)       # ValueError: list.remove(x): x not in list

clear 清空列表

list7 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']
list7.clear()
print(list7)    # []

del 按照索引删除

list8 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']

del list8[3]
print(list8)    # ['A', 'B', 'C', 2, 'A', 'A', 'D']

# 按照切片(步长)进行删除
del list8[::2]
print(list8)    # ['B', 2, 'A']

update

# update
list9 = ['A', 'B', 'C', 'D']

# 直接使用索引进行赋值
list9[0] = "a"
print(list9)    # ['a', 'B', 'C', 'D']

list9[2:] = "EFGH"
print(list9)    # ['a', 'B', 'E', 'F', 'G', 'H']

# 给列表中的多个元素赋值
l = list("0123456789")
l[6:] = "abcdef"
print(l)      # ['0', '1', '2', '3', '4', '5', 'a', 'b', 'c', 'd', 'e', 'f']

# 把列表中下标6到末尾的值更新为"A","B"
l[6:] = "AB"
print(l)    # ['0', '1', '2', '3', '4', '5', 'A', 'B']

# 把列表中索引2,3的值更新为C
l[2:4] = "C"
print(l)     # ['0', '1', 'C', '4', '5', 'A', 'B']

# 在不替换原有元素的情况下加入新元素
l[2:2] = "23"
print(l)    # ['0', '1', '2', '3', 'C', '4', '5', 'A', 'B']

# 将两个元素赋值给四个空间,报错
l[2::2] = "AB"    # 从下标2取值到末尾,步长为2,需替换4个值,而给到的数据只有两个,所以报错
print(l)      # ValueError: attempt to assign sequence of size 2 to extended slice of size 4

# 指定数据超过被替换数据个数,同样报错
l[2::2] = "ABCDE"
print(l)    # ValueError: attempt to assign sequence of size 5 to extended slice of size 4

# 将4个值替换4个值  成功
l[2::2] = "ABCD"
print(l)    # ['0', '1', 'A', '3', 'B', '4', 'C', 'A', 'D']

for i in l:
    print(i)

列表嵌套

l1 = [1, 2, "abcd", "lisi", 18, ["name", "age", 20]]
l1[2] = l1[2].upper()
print(l1)   # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 20]]

# 给列表中嵌套列表追加数据
l1[5].append("sex")
print(l1)   # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 20, 'sex']]

# 修改列表中嵌套列表元素的值
l1[5][2] = 18
print(l1)   # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 18, 'sex']]

l1[-1][0] = "user_" + l1[-1][0]
print(l1)    # [1, 2, 'ABCD', 'lisi', 18, ['user_name', 'age', 18, 'sex']]
posted @ 2020-04-06 21:40  我是dev小白  阅读(100)  评论(0)    收藏  举报