Day7

1、数据类型补充

#str

s='alex'

s1=' '

ret=s1.isspace()

print(ret)   #返回True

#tuple

对于元祖:如果只有一个元素,而且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型。

tu=(1)

tu1=(1,)

print(tu,type(tu))  #返回int

print(tu1,type(tu1))  #返回tuple

tu=('老男孩')

tu1=('老男孩',)

print(tu,type(tu))  #返回str

print(tu1,type(tu1))  #返回tuple

tu=([1,2,3])

tu1=([1,2,3],)

print(tu,type(tu))  #返回list

print(tu1,type(tu1))  #返回tuple

#对于list

#再循环一个列表时,最好不要进行删除的动作(一旦删除,索引会随之改变),容易出错

#将索引为奇数的元素删除

li=[11,22,33,44,55]
del li[1::2]
print(li)

li=[11,22,33,44,55]
l1=[]
for i in range(len(li)):
    if i%2==0:
        li.append(li[i])
li=l1
print(li)
View Code
li=[11,22,33,44,55]
l1=[]
for i in li:
    if li.index(i)%2==0:
        l1.append(i)
li=l1
print(li)
View Code
li=[11,22,33,44,55]
for i in range(len(li)-1,-1,-1):
    if i%2==1:
        del li[i]
print(li)
View Code

#dict

dic=dict.fromkeys('abc','alex')

print(dic)

dic=dict.fromkeys([1,2,3],[])

print(dic)

dic[1].append('老男孩')

print(dic)
View Code

#将字典中含有K元素的键,对应的键值对删除

dic= {'k1':'value1','k2':'value2','k3':'value3'}
l1=[]
for i in dic:
    if 'k' in i:
        l1.append(i)
for i in l1:
    del dic[i]
print(dic)
View Code

#再循环字典中,不能增加或者删除此字典的键值对

# dictionary changed size during iteration

#数据转换

#int str bool

#str list split  join

#tuple list

tu=(1,2,3)

li=list(tu)

l1=[1,2,3]

tu1=tuple(l1)

print(tu1)

#数据类型转化为bool 为false

0  ''  []  () {}

tuple >>str

tu=('wusir','老男孩')

s=' ',join(tu)

print(s)

2、集合

集合:

  数据类型:

  不重复,无序,他里面的元素是可哈希的。它本身是不可哈希,所以不能作为字典的key

  作用:1、去重

    2、数据关系的测试

#去重

li= [11,11,22,22,33,33,33]
li=list(set(li))
print(li)
set={11,22,33,11,22,33}
print(set)
View Code

set1={'alex','wusir','ritian','barry'}

#增

set1.add('女神')

set1.update('abc') #迭代添加

set1.update([1,2,3])  #迭代添加

print(set1)

#删

set1.remove('alex')

#随机删除

set1 = {'alex','wusir','ritian','egon','barry'}
ret = set1.pop()
print(ret)
print(set1)
View Code

set1.clear()

print(set1)   #返回 set()

del set1

print(set1)  #报错

#查

for i in set1: #遍历

  print(i)

set1= {1,2,3,4,5}

set2={4,5,6,7,8}

#交集  & intersection

print(set1 & set2)

print(set1.intersection(set2))   #4,5

#反交集  ^ symmetric_difference

print(set1  ^ set2)   #{1,2,3,6,7,8}

print(set1.symmertric_difference(set2))  #{1,2,3,6,7,8}

#并集  | union

print(set1 | set2)

print(set1.union(set2))  #{1,2,3,4,5,6,7,8}

#差集

print(set1 -  set2)   #{1,2,3}

print(set2 - set1)  #{6,7,8}

set1= {1,2,3}

set2={1,2,3,4,5,6}

print(set1.issubset(set2))   #set1是set2的子集

print(set2.issuperset(set1))  #set2是set1的超集

set1={'bayy','wusir'}

#不可变集合

set2=frozenset(set1)

print(set2,type(set2))

2、深浅Copy

li=[1,2,3]

l2=l1

l2.append(111)

print(l1,l2)

#对于赋值运算,指向的是同一个内存地址。字典,列表,集合都一样

#copy不是指向一个,在内存中开辟了一个内存空间

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,

所以,对于第二层以及更深的层数来说,保持一致性

l1 = [1,2,[1,2,3,[22,33,44]],4]
l2=l1.copy()
l1[2].append(666)
print(l1)
print(l2)
print(id(l1))
print(id(l2))
View Code

#deep.copy

对于深copy来说,两个是完全独立的

改变任意一个任何元素(无论多少层),另一个绝对不改变

import copy

li=[1,2,[1,2,3],4]

l2=copy.deepcopy(l1)

li[2].append(666)

print(l1,l2)

print(id(l1))

print(id(l2))

#切片是浅copy

l1=[1,2,3,[22,33]]

l2=l1[:]

l1[3].append(666)

print(l2)   #[1,2,3,[22,33,666]]

3、编码的补充

#gbk--->utf-8

s='alex'

s1=s.encode('gbk')

print(s1)

s2=s1.decode('gbk').encode('utf-8')

print(s2)

原文地址:https://www.cnblogs.com/a352735549/p/8652089.html