1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后

python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后

时间:2018-06-27 09:58:55

相关推荐

python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后

在基础数据类型中可能遇到的坑:

元组:

tuple1=(1) 的数据类型是int , tuple2=(‘alex‘)的数据类型是str 等

tuple1=(1,) 和 tuple2的数据类型是 tuple

列表:

列表与列表之间可以相加,但不可以减(面试题)

list1=[1,2,3]

list2=[‘a‘,‘b‘]

list3=list1+list2

print(list3)

#[1, 2, 3, ‘a‘, ‘b‘]

对于可变数据类型容易遇到的坑:

列表: 在for循环中删除列表中的元素,索引会跟着变化

# 删除列表中偶数索引对应的元素

# 方法1:新建一个列表,将奇数索引对应的元素添加进去

list1=[1,2,3,4,5,6,7]

list2=[]

for i in list1:

if list1.index(i) % 2 == 1:

list2.append(i)

print(list2

# 方法2:从列表的最后开始删

list1=[1,2,3,4,5,6,7]

for i in range(len(list1)-1,-1,-1):

if i % 2 == 0:

list1.pop(i)

print(list1)

# 方法3

# list1=[1,2,3,4,5,6,7]

# del list1[0::2]

# print(list1)

字典: 在for循环中删除字典中的键值对,for循环会报错

# 删除字典中含k的键

# 方法1:将keys提取到列表中,循环去除

dic={‘k1‘:1,‘k2‘:2,‘name‘:3}

list1=list(dic.keys())

for i in list1:

if ‘k‘ in i:

dic.pop(i)

print(dic)

# # 方法2

# dic={‘k1‘:1,‘k2‘:2,‘name‘:3}

# dic2={}

# for k in dic.keys():

# if ‘k‘ not in k:

# dic2.setdefault(k,dic[k])

# print(dic2)

创建字典的3种方法(面试题)

1.dic1={}

2.dic2=dict()

3.dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[ ]) fromkeys后面加可迭代数据

# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[])

# dic3[‘key1‘]=‘alex‘

# print(dic3)

#{‘key1‘: ‘alex‘, ‘key2‘: [], ‘key3‘: []}

区分:

# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[])

# dic3[‘key1‘].append(‘1‘)

# print(dic3)

#{‘key1‘: [‘1‘], ‘key2‘: [‘1‘], ‘key3‘: [‘1‘]}

dic4=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘alex‘)

dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘egon‘)

print(dic3)

#{‘key1‘: ‘egon‘, ‘key2‘: ‘egon‘, ‘key3‘: ‘egon‘}

集合:

集合的创建:

1. set1={1,2,3}

2.set2=set()

特点:

集合本身是可变数据类型 frozenset(set1): 冻集合,可以做字典的键

集合里面的元素必须是不可变数据类型

集合是无序的

集合天然去重 (面试题)

# 方法1:利用set去重

list1=[‘alex‘,‘egon‘,1,‘alex‘]

set1=set(list1)

list1=list(set1)

print(list1)

# 方法2:利用for循环去除

list1=[‘alex‘,‘egon‘,1,‘alex‘]

list2=[]

for i in list1:

if i not in list2:

list2.append(i)

print(list2)

集合的增和删

增:

add

update 相当于list 的extend

删:

remove 按元素删

pop 随机删

clear 清空

del 内存级别删

数据类型之间的相互转换:

1.

str-->list : split()

list-->str : join 列表里只能由字符串类型的数据,有其他类型的数据会报错

list1=[‘alex‘,‘egon‘,‘alex‘]

s=‘_‘.join(list1)

print(s)

2.

dict-->list:

list(dic.keys())

list(dic.values())

list(dic.ites())

list-->dict:

列表不能转换为字典

3.

tuple-->list: list1=list(set())

list-->tuple: tuple1=tuple(list())

赋值=与深浅copy:

赋值 = : 数据一样,id也一样

浅copy: 数据一样,里层的id一样,最外层的id不一样 (int str bool类型没有浅copy)

list1=[1,2,3]

list2=list1.copy()

print(id(list1),id(list2))

print(id(list1[0]),id(list2[0]))

#1866482736328 1866482736264

#1887330528 1887330528

深copy:数据一样,里层外层的id都不一样 (int str bool类型有深copy但id不变)

import copy

list1=[1,2,3]

list2=copy.deepcopy(list1)

print(id(list1),id(list2))

print(id(list1[0]),id(list2[0]))

关于一些关键字后面加可迭代对象

enumerate

‘ ‘.join()

for循环

python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。