数据转换

元祖:如果元祖里面只有一个元素,有逗号数据类型是元祖,没有逗号这数据类型与元素的数据类型一致。

tu1 =('fgh')

tu2 =('dfg',)

列表:

列表与列表之间可以相加。

在循环一个列表时,如果对列表中的某些元素进行删除,
那么此元素后面的所有元素就会向前进一位,他们的索引就会发生变化。

 

 l1 = [11, 22, 33, 44, 55, 66, 77, 88]
方法一:切片+步长删除
del l1[1::2]
print(l1)

方法二:
l2 = []
 for i in range(len(l1)):
 if i % 2 == 0:
 l2.append(l1[i])
print(l2)
l1 = l2
print(l1)
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
方法三:倒序删除
 for index in range(len(l1)-1, -1, -1):
if index % 2 == 1:
l1.pop(index)
print(l1)
在循环一个列表时,最好不要对此列表进行改变大小(增删)的操作。

 

字典

面试题:创建字典的方式
1,直接创建
dic = {'name':'alex'}
2
dic = dict({'name':'alex'})
print(dic)
3, fromkeys()

dic1 = dict.fromkeys([1,2,3],'alex')

print(dic1)


dic = {'key1': 'value1','key2': 'value2', 'k3':'v3', 'name': 'alex'}
 将 dic的键中含有k元素的所有键值对删除。


 for key in dic:
  if 'k' in key:
     dic.pop(key)

报错:dictionary changed size during iteration: 在循环一个字典时,不能改变字典的大小。

dic = {'key':1,'key1':1,'key2':2,'a':1}
l = []
for i in dic:
    if 'k' in i:
        l.append(i)
print(l)
for a in l:
    dic.pop(a)
print(dic)

 

数据类型的转换。

int str bool 三者转换
str <---> bytes
str <---> list
dict.keys() dict.values() dict.items() list()
tuple <---> list
dict ---> list

str ---> list
s1 = 'alex wusir taibai'
l1 = s1.split()
print(l1)
list ---> str 此list中的元素全部是str类型
l1 = ['alex', 'wusir', 'taibai']
s2 = ' '.join(l1)
print(s2)
 tuple <---> list
 l1 = [1,2,3]
 tu1 = tuple(l1)
 print(tu1)

 tu2 = (0,2,3)
l1 = list(tu2)
print(l1)

 

0 " [] () {} set() ---> bool False

赋值运算
l1 = [1,2,3]
l2 = l1
l1.append(666)
print(l2)
print(id(l1))
print(id(l2))
应用场景:面试会考,解释深浅copy
完全独立的copy一份数据,与原数据没有关系,深copy
如果一份数据(列表)第二层时,你想与原数据进行公用,浅copy。
面试题
切片属于浅copy
l1 = [1,2,3,[22,33]]
l2 = l1[:]
l1.append(666)
l1[-1].append(666)
print(l2)

深copy
import copy
l1 = [1,2,3,[1,2]]
l2 = copy.deepcopy(l1)
print(id(l1))
print(id(l2))
print(id(l1[3]) == id(l2[3]))

  

集合有天然的去重功能:
面试必考:list去重 *****
l1 = [1,1,2,3,4,4,3,2,1,5,5]
set1 = set(l1)
l2 = list(set1)
print(l2)
posted @ 2018-08-12 15:11  俏如來  阅读(108)  评论(0编辑  收藏  举报