Python-常用容器总结

一、列表

# 1. 创建列表
x1 = [1, 2, "aa"]
x2 = list(range(1, 10, 2))
x3 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
x4 = []


# 2. 访问列表元素
print(x1[2])
print(x1[-1]) # 倒数第一个元素;最后一个元素
print(x1[-2]) # 倒数第二个元素
print(x3[2][0])


# 3. 添加元素
l1 = [1, 2]
l1.append(3) # 追加
l1.append(4) # 追加
l1.extend([1, 2, 3]) # 扩展,将 新的列表对象 里面的元素扩展到list1中
l1.insert(0, 0) # 在 index=0 的前面插入元素


# 4. 删除元素
l2 = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
l2.remove(5)    # 移除 某个值的第一个匹配项
l2.pop()        # 移除 最后一个 元素
l2.pop(-1)      # 移除 最后一个 元素
l2.pop(1)       # 移除 index=1 的元素


# 5. 切片 [start:stop:step] == [)
ls = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(ls[0:])   # [start:] 从start到最后
print(ls[:3])   # [:stop] 从头到stop
print(ls[1:2])  # [start:stop] 从start到stop
print(ls[0::2]) # [start:stop:step] 以步长为step,从编号 start 往编号 stop 切片


# 6. 常用操作符
# (1) '==' :只有成员、成员位置都相同时才返回True
print([1, 2] == [1, 2])
# (2) '+'  :两个列表合并成一个新的列表,将两个list相加,需要创建新的 list 对象,从而需要消耗额外的内存
print([1, 2] + [2, 2, 6, 8])
# (3) '*'  :将列表复制 n 遍,生产新的列表
print([1, 2, 3] * 2)
# (4) 'in' :判断元素是否在列表中
print(123 in [1, 2, 123])
# (5) 'not in' : 判断元素是否不在列表中
print(123 not in [1, 2, 123])


# 7. 其他方法
lx = [1, 1, 2, 3, 3, 2, 5, 5, 5]
# (1) list.count(obj) 统计某个元素在列表中出现的次数
print(lx.count(5))
# (2) list.index(x]) 从列表中找出某个值第一个匹配项的索引位置
print(lx.index(2))
# (3) list.reverse() 反转列表,改变的是列表本身,无返回值
lx.reverse()
# (4) list.sort(key=None, reverse=False) 对列表排序,无返回值
#   -- reverse=False 升序
#   -- reverse=True  降序
lx.sort(reverse=False)

二、元组

# 1. 创建元组
# (1) tuple被创建后就不能对其进行修改,类似字符串
# (2) 元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()
# (3) 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
temp1 = (1,) # 需要加括号,否则括号会被当作运算符使用
temp2 = (1, 2, 3)
temp3 = ((1, 2, 3), (1, 2, 3), (1, 2, 3))


# 2. 元组访问元素与切片 [start, stop)
tu = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, (1, 2, 3))
print(tu[0])
print(tu[0::2])
print(tu[-1][0:1])


# 3. 元组元素的更新
# 元组有不可更改 的性质,因此不能直接给元组的元素赋值
# 但是只要元组中的元素可更改,那么就可以直接更改其元素
t1 = (1, 2, 3, [4, 5, 6])
print(t1) # (1, 2, 3, [4, 5, 6])
t1[3][0] = 9
print(t1) # (1, 2, 3, [9, 5, 6])


# 4. 操作符
print((1, 2) + (5, ))
print((1, 2) * 5)
print(1 in (1, 2))
print("aa" not in (1, 5))


# 6. 内置方法:元组大小和内容都不可更改,因此只有 count 和 index 两种方法
tus = (1, 2, 1, 2, 'puuu')
print(tus.count('puuu'))
print(tus.index(1)) # 如果不存在,则抛异常ValueError

三、集合

# 1. 创建集合
# 在创建空集合的时候只能使用 s = set() ,因为 s = {} 创建的是空字典
s1 = set()
s2 = {'aa', 'bb', 'aa'}



# 2. 集合
#   -- 无序 和 唯一
#   -- 重复元素在 set 中会被自动被过滤
#   -- 由于 set 存储的是无序集合,所以我们不可以为集合创建索引或执行切片(slice)操作
#   -- 可以判断一个元素是否在集合中



# 3. 常见的方法
# (1) 使用 len() 得到集合大小
print(len({1, 2, 3, 4, 5}))

# (2) 使用 for 把集合中的数据读取出来
for i in {'Google', 'Baidu', 'Taobao'}:
    print(i)

# (3) 可以通过 in 或 not in 判断一个元素是否在集合中
print('a' in {'a', 5, 'ss'})
print('a' not in {'a', 5, 'ss'})

# (4) set.add(elmnt) 用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
d = {1, 2, 3}
d.add("dddd")
print(d)

# (5) set.remove(item) 移除集合中的指定元素。如果元素不存在,则会发生错误
d = {1, 9, 2, 3}
d.remove(9)
print(d)

# (6) set.discard(value) 移除集合中的指定元素。如果元素不存在,则不做任何操作,不报错
d.discard(9)
print(d)

# (7) set.pop() 随机移除一个元素

# (8) set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False
print({1, 2}.isdisjoint({2, 3}))
print({1, 2}.isdisjoint({6, 3}))

# (9) 返回两个集合的交集
#   -- set.intersection(set1, set2 ...)
#   -- set1 & set2 返回两个集合的交集
print({1, 2, 3}.intersection({5, 6, 7}))
print({1, 2, 3}&{5, 6, 7})

# (10) 返回两个集合的并集
#   -- set.union(set1, set2...)
#   -- set1 | set2
print({1, 2, 3}.union({"aaa", 1}))
print({1, 2, 3} | {"aaa", 1})

# (11) 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False
#   -- set.issubset(set)
#   -- set1 <= set2
print({1, 2, 3}.issubset({1, 2, 3}))
print({1, 2, 3} <= {1, 2, 3})

# (12) 用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False
#   -- set.issuperset(set)
#   -- set1 >= set2
print({1, 2, 3}.issuperset({1, 2, 3}))
print({1, 2, 3, 4} >= {1, 2, 3} >= {1, 2, 3})
print({1, 2, 3, 4} >= {1, 2, 9, 3} >= {1, 2, 3})

四、字典

# 1. 字典
# 字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值
# 字典 是无序的 键值对集合
# 键必须是互不相同的
# 内部存放的顺序和 key 放入的顺序是没有关系的
# 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存



# 2. 创建字典
dic0 = {}
dic1 = {'李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing'}
dic2 = dict()



# 3. 添加元素
dic2['a'] = 1
dic2['b'] = 2
dic2['b'] = 3 # 后面的值会把前面的值冲掉



# 4. 常用方法
dic = dict()
dic["aa"] = 11
dic["bb"] = 22
dic["cc"] = 33
dic["dd"] = 44

# (1) dict.get(key) 返回指定键的值
print(dic.get('aa'))
print(dic['aa'])

# (2) dict.clear() 用于删除字典内所有元素
dic.clear()

# (3) 删除指定键的 键值对
dic.pop("aa")

# (4) dict.keys() 返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键
print(list(dic.keys()))

# (5) dict.values() 返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有值
print(list(dic.values()))

# (6) dict.items() 返回用键值对构成的元组构成的列表
print(dic.items())

# (7) "key in dict" 用于判断键是否存在于字典中,如果键在字典 dict 里返回 true ,否则返回 false

# (8) "key not in dict"  如果键在字典 dict 里返回 false ,否则返回 true

五、序列

# 容器的互相转换
'''
集合
se = set([1, 2, 3, 4, 4, 5, 5, 6, 6, 6]) # 列表-->集合
se = set((1, 2, 3, 4, 4, 5, 5, 6, 6, 6)) # 元组-->集合

列表
li = list({1, 2, 3, 4}) # 集合-->列表
li = list((1, 2, 3, 4)) # 元组-->列表

元组
tu = tuple({1, 2, 3, 4}) # 集合-->元组
tu = tuple([1, 2, 3, 4]) # 列表-->元组

字典
d1 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098))) # 元组-->字典
d2 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)]) # 列表-->字典

'''



'''
1. list(sub)    把一个可迭代对象转换为列表
2. tuple(sub)   把一个可迭代对象转换为元组
3. str(obj)     把obj对象转换为字符串
4. len(s)       返回对象(字符、列表、元组等)长度或元素个数
5. max(sub)     返回序列或者参数集合中的最大值
6. min(sub)     返回序列或参数集合中的最小值
7. sum(iterable[, start=0]) 返回序列 iterable 与可选参数 start 的总和
8. sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作
    a. iterable -- 可迭代对象。
    b. key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代
    对象中的一个元素来进行排序。
    c. reverse -- 排序规则, reverse = True 降序 , reverse = False 升序(默认)
    d. 返回重新排序的列表。
9. reversed(seq) 函数返回一个反转的迭代器。
    -- seq:要转换的序列,可以是 tuple, string, list 或 range
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值