python基础六

补充:

#只能是至少一个空格组成的字符串(全空格)
s = "   "
print(s.isspace())
#输出:True

tuple:

tu = (1)         int 数据类型
tu1 = (1,)       tuple数据类型
tu2 = ("a")      str数据类型
tu3 = ("a",)     tuple数据类型
#当元组只有y一个元素组成,并且没有用“,”隔开,则该元素是什么类型,则整体就是什么数据类型

list:

在循环一个列表时,如果要删除某些或某类元素,容易出错

l1 = [111,222,333,444,555]
for i in range(len(l1)):
    del l1[i]
print(l1)
#报错,由于每次删除,列表都改变,越来越短,所以后面找不到
fromkeys:
dic = dict.fromkeys('abc','alex')
print(dic)
#输出{'a': 'alex', 'b': 'alex', 'c': 'alex'}
#将前面字符串 分别作为后面字符串的key
dic1 = dict.fromkeys([1,2,3],[])
print(dic1)
dic1[1].append('alex')
print(dic1)
#{1: [], 2: [], 3: []}
#{1: ['alex'], 2: ['alex'], 3: ['alex']}
#添加的“alex”是添加到没有fromkeys之前的[]
#删除 字典中带有k的键值对
dic = {'k1':'a','k2':'b','k3':'c','name':'d'}
l1 = []
for i in dic:
    if 'k' in i:
        l1.append(i)
for j in l1:
    del dic[j]
print(dic)
#先把带“k”的循环出来,添加到新的列表里,然后循环列表了的数据,在字典里删除

不可变数据类型:可哈希

数据类型的转换:

str--->list    用split切割

list--->str    用join

字典专属类型:与list转换

print(dic.keys())      #dict_keys(['k1', 'k2', 'k3', 'name'])  再转换成列表:list(dic.keys())
print(dic.values())
print(dic.items())
#都可转换成列表

对于赋值运算,就是共同指向一个内存地址:

l1 = [1,2,3,4]
l2 = l1
l1.append(5)
print(l1,l2)
#输出:[1, 2, 3, 4, 5] 
            [1, 2, 3, 4, 5]
#指向同一个内存地址
--------------------------------------------
s1 = "abcd"
s2 = s1
s1 = "abcde"
print(s1)
print(s2)
#输出:abcde
           abcd
#指向不同内存地址
#字符串不能改变,如果改变,形成新的字符

copy:

对于浅层copy,第一层是独立内存地址,从第二层来说,都指向同一内存地址,一变都变

l1 = [1,2,3]
l2 = l1.copy()
l1.append(4)
print(l1,id(l1))
print(l2,id(l2))
#输出:[1, 2, 3, 4] 737988481992
#输出:[1, 2, 3] 737987305544
————————————————————
l1 = [1,2,[4,5],3]
l2 = l1.copy()
l1[2].append(4)
print(l1,id(l1))
print(l2,id(l2))
#输出:[1, 2, [4, 5, 4], 3] 95033008200
#输出:[1, 2, [4, 5, 4], 3] 95034162248
列表内部的列表:占的是同一个内存地址

对于深copy来说,无论多少层,在内存中都是独立的

import copy
l1 = [1,[22,33,],2,3]
l2 = copy.deepcopy(l1)
l1.append(777)
l1[1].append(666)
print(l1,id(l1),id(l1[1]))
print(l2,id(l2),id(l2[1]))
#输出[1, [22, 33, 666], 2, 3, 777] 112902551624 112902552648
#输出[1, [22, 33], 2, 3] 112902550920 112902574728
l1 = [1,[1,2],2,3]
l2 = l1[:]
l1[1].append(111)
print(l1)
print(l2)
#输出:[1, [1, 2, 111], 2, 3]
           [1, [1, 2, 111], 2, 3]
#l2 = l1[:]  是浅copy  
#切片是浅copy
原文地址:https://www.cnblogs.com/pygg/p/8378456.html