python-列表和元组

#列表的相关操作,列表是可变的可迭代对象
# index(value,[start,[stop]])通过值value,从指定区间查找,匹配第一个就立即返回索引,找不到,抛出ValueError
lst = ['a',1,2,3,4,'a','b','c']
lst[1]='b'
print(lst)
print(lst.index('a',3))
# count(value) 返回列表中的value的个数
lst.count('a')
# len(list) 返回列表的长度
print(len(lst))

# append(object) ->None 会修改原列表
lst.append('e')
lst.append([1,2])
# insert(index, object) -> None会修改原列表.索引超出,会在尾部/头部追加
lst.insert(1,55)
# extend(iteratable) -> None 将iteratable的元素追加进来
lst.append([1,2])
 # + -> list 连接两个列表,产生新的列表,原列表不变
# * -> list 将列表元素重复
# remove(value) -> None,从左到右查找第一个匹配的值,移除该元素。找不到ValueError
lst.remove(55)
# pop([index]) -> item 不指定索引,从尾部弹出,返回弹出的值。指定索引,就弹出指定元素,索引超界IndexError
lst.pop(1)
#reversed() -> None 就地修改,反转列表
reversed(lst)
#  sort(key=None, reverse=False) -> None 就地排序 ,如果没有定义排序规则key,则只能同类型排序,比如包含了字符串和数字,就排不了
lst1= [1,2,3]
lst1.sort()
# clear() -> None
lst.clear()
# 列表复制
lst1 = [1, [2, 3, 4], 5]
lst2 = lst1.copy()
print(lst1 == lst2) #true
lst2[2] = 10
print(lst1 == lst2) # false
lst2[2] = 5 # 把lst2的第三个元素改成和lst1的第三个元素一样
lst2[1][1] = 20 # 仅仅改了lst2 ,他们会一样吗?
print(lst1 == lst2) # Ture
# 总结,遇到引用类型,则只复制了引用。两个列表的第二个元素都是指向这个引用[2, 3, 4],所以会同时改。
# 与之对应的是深拷贝
import copy
lst0 = [1, [2, 3, 4], 5]
lst5 = copy.deepcopy(lst0)
lst5[1][1] = 20
print(lst5 == lst0) # false

# 元组只读,只有查询的相关操作,没有增删改
t = (1,2,3)
t1 = (1,) #只包含一个元素时候,要带个逗号
print(t.index(1))
# count(value) 返回列表中的value的个数
t.count(2)
# len(list) 返回列表的长度
print(len(t))
['a', 'b', 2, 3, 4, 'a', 'b', 'c']
5
8
True
False
True
False
0
3
posted @ 2021-01-21 10:06  静惜  阅读(73)  评论(0)    收藏  举报