二.列表、元组和集合

1.Python的数据结构

  • Container容器:
    • 序列:
      • string字符串:"abcd",'ABCD' ---不可变
        • string由于属于序列,所以可以索引
      • tuple元组:(1,2,34,"abc") --- 不可变
      • list列表:[1,2,"123"] ---可变
    • 映射:dict字典: {"key":"map"} --- 可变
    • 集合:set
  • ()含有不可变属性,如函数中的参数输入,元组等
  • []含有可变属性,同时也具备索引属性。无论是list还是dict,都是以[index]模式进行索引
  • {}含有映射属性,dict字典、string中format使用

2.序列操作

  • 索引:AAA[-1]表示最后一个数,-1表示序列倒数第一个数,正数是0开始。
  • 切片A[a:b:c]:
    • a开始位置(有a)、b结束位置(无b)。
    • ab孰大孰小取决于步长c。
    • ab可以不写,表示极端位置。
  • 序列相加:注意不是矩阵运算,不能拼接不同类型的序列。
  • 乘法:
    a=[None,1]
    print(a*3)
    >>>[None, 1, None, 1, None, 1]
  • 成员资格,运算符in:
    print(2 in ["a",2])   #True
    print("b" in ("b",2)) #True
    print("C" in "China") #True 

3.复制的相关问题:

  • 浅复制与深复制:
    a=[1,2,3,["a","b"]]
    b=a #建立指针
    c=a.copy()  #浅复制,只能复制第一层,更高层建立指针
    from copy import deepcopy
    d=deepcopy(a) #深复制,复制内存
  •  切片赋值:
    #切片赋值,也只能复制第一层
    list1=[1,"a",2,["ABC",123]]
    n=list1[:]
    print(n,list1) #[1, 'a', 2, ['ABC', 123]] [1, 'a', 2, ['ABC', 123]]
    n[0]=2
    n[-1][-1]=456
    print(n,list1) #[2, 'a', 2, ['ABC', 456]] [1, 'a', 2, ['ABC', 456]]

4.元组

  • 表示只包含一个元素的元组:(42,),这里必须要加逗号才可以表示元组,(42)=42。

5.集合

#集合,没有重复的元素
a=set([1,2,3,4,2,1])
print(a) #{1, 2, 3, 4}
#{...}来设定集合,但是不能{},{}表示字典
b={2,3,8,8,8,8,"abc","abc","abc"}
print(b) #{8, 2, 3, 'abc'}
print(a.union(b),a|b,a&b) #集合运算
#集合是可变的,不能用作字典中的键。集合只能包含不可变(可散列)的值,不能包含其他集合
a.add(frozenset(b)) #如果要包含其他集合,必须冻结住该集合
print(a) #{1, 2, 3, 4, frozenset({8, 2, 3, 'abc'})}

 

posted @ 2019-03-28 20:10  观井映天  阅读(243)  评论(0编辑  收藏  举报