文章目录
- 类型是否可转换
- 基本类型汇总
- 集合 set
- 【创建】
- 【添加元素】
- 【删除】
- 【清空】
- 【差集】
- 【交集】
- 【并集】
- 【update 批量更新】
- 【set → numpy】
- 元组 tuple ()
- 【描述】
- 【优点】
- 【元组的创建】
- 【元组的插入】
- 【删除元组】
- 字典 dict {}
- 【创建空列表】
- 【创建列表】
- 【字典的获取】
- 【字典更新】
- 【dict → list】
- DefaultDict
- 【创建】
- 【遍历】
- 【DefaultDict(list) → dict】
- 【DefaultDict(list) → DefaultDict(set)】
- 【DefaultDict(set) → DefaultDict(list)】
- 列表 list []
- 【创建空列表】
- 【创建和读取】
- 【修改元素】
- 【末尾增加更多元素】
- 【截取list中的某一段】
- 【更改list中连续的元素】
- 【删除list中某段元素】
- 【list → tuple】
- 【list → dict 】
类型是否可转换
基本类型汇总
集合 set
【创建】
s = set() # 创建空集合
s = {"1", "2"}
【添加元素】
s.add(123)
【删除】
# 移除元素 如果元素不存在,不会报错 remove 如果元素不存在,会报错
s.discard(32)
【清空】
s.clear()
【差集】
s1 = {32, 12, 34}
s2 = {12, 43, 23}
# 差集
# s1中存在,s2中不存在
print(s1.difference(s2))# 对称差集
print(s1.symmetric_difference(s2))
【交集】
# 交集
print(s3.intersection(s4))# 判断两个集合有没有交集,有返回true 无返回false
print(s3)
print(s4)
print(s3.isdisjoint(s4))
# False 怎么是false 这不是有交集吗
【并集】
# 并集
print(s3.union(s4))
# {33, 22, 11, 44}
【update 批量更新】
li = [21, 4, 2, 312]
s3.update(li)
print(s3)
# {33, 2, 4, 11, 21, 22, 312}
【set → numpy】
>>> numpy.array(list(c))
array([1, 4, 6])
元组 tuple ()
【描述】
是不可变的对象
【优点】
(1)最大的一个特性就是使函数可以返回多个值。(python可以返回多个返回值就是通过它实现的)。
(2)tuple 放弃了对元素的增删(内存结构设计上变的更精简),换取的是性能上的提升:创建 tuple 比 list 要快,存储空间比 list 占用更小。所以就出现了“能用 tuple 的地方就不用 list”的说法。
(3)由于 tuple 不可变,多线程并发的时候,tuple 是不需要加锁的,不用担心安全问题。
【元组的创建】
>>> temp=() # 创建一个空元素的元组
>>> temp=(1,) # 创建带一个元素的元组,注意这里的逗号不可省略
>>> 8*(8) # 没有逗号的情况,不是元组
64
>>> 8*(8,) # 有逗号的情况
(8, 8, 8, 8, 8, 8, 8, 8)
【元组的插入】
>>> temp = ("龙猫","泰迪","叮当猫")
>>> print(temp[:2] + ("小猪佩奇",)+temp[2:])
('龙猫', '泰迪', '小猪佩奇', '叮当猫')
【删除元组】
>>> temp = ('龙猫', '泰迪', '小猪佩奇', '叮当猫')
>>> print(temp[:2] + temp[3:])
('龙猫', '泰迪', '叮当猫')
字典 dict {}
【创建空列表】
L={} # 方式一
L=dict() # 方式二
【创建列表】
dict = {'name': 'runoob', 'likes': 123, 'url': 'www.csdn.com'}
【字典的获取】
tinydict = {'Name': 'Runoob', 'Age': 27}
print("Value : %s" % tinydict.get('Age'))
>>>
Value : 27
【字典更新】
car = { "brand": "Porsche", "model": "911", "year": 1963}
car.update({"color": "White"})
【dict → list】
d1 = {'en':'英语','cn':'中文','fr':'法语','jp':'日语'
}
list_values = [i for i in d1.values()]
list_keys= [ i for i in d1.keys()]
DefaultDict
与dict相比,DefaultDict拥有默认的key。
【创建】
参考网址1
/************************************ defaultdict(int)
***********************************/
dint = defaultdict(int)
// init value
for k in s:dint[k] += 1/************************************ defaultdict(list)
***********************************/
dlist=defaultdict(list)// init with s
s=[('yellow',1),('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
for k, v in s:dlist[k].append(v)
a=sorted(d.items())/************************************ defaultdict(set)
***********************************/
dset=defaultdict(set)
for k, v in s:dset[k].add(v)
print(d)
a=sorted(d.items())
【遍历】
/************************************ defaultdict(set)
***********************************/
dset=defaultdict(set)
s=[('yellow',1),('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
for k, v in s:dset[k].add(v)
【DefaultDict(list) → dict】
>>> a
defaultdict(, {'1': ['b', 'a'], '3': ['b'], '2': ['a']})>>> dict(a)
{'1': ['b', 'a'], '3': ['b'], '2': ['a']}
【DefaultDict(list) → DefaultDict(set)】
obj=fmdl.SparseMatrix("/home/i9/experiment_ssl/cube_uniform100k.ply")
r1,r2=obj.GetAdjacentList()
d=defaultdict(set)
for i in range(len(r1)): for e in r2[i]:d[r1[i]].add(e)# print(type(r2[i])) # print(type(set(r2[i])))
print(d)
【DefaultDict(set) → DefaultDict(list)】
>>> values = defaultdict(Set)
>>> values['a'].add(1)
>>> defaultdict(list, ((k, list(v)) for k, v in values.items()))
defaultdict(<type 'list'>, {'a': [1]})
列表 list []
【创建空列表】
L=[] # 方式一
L=list() # 方式二
【创建和读取】
fruits = ['apple', 'banana', 'pear', 'grapes', 'pineapple', 'watermelon']
print(fruits[2]) # 输出pear
【修改元素】
fruits[2] = 'tomato'
【末尾增加更多元素】
fruits.append('eggplant')
【截取list中的某一段】
print(fruit[: 2])
【更改list中连续的元素】
fruits[:2] = ['a', 'b'] # 修改fruits的第1,2元素为a, b
【删除list中某段元素】
fruits[:2] = [] #删除前两个元素
【list → tuple】
tuple(temp_list)
【list → dict 】
a= ['hello','world','1','2']
b=dict[zip(a[0::2],a[1::2]))
print(b)
>>>
{'1':'2','hello':'world'}