Python的基本数据类型

1、列表(list)

  1、列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数组, java中的数组等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型:

lst = ["张三",1,2,3,"李四"]

  2、列表的增删改查

    2.1、新增

lst = []
lst1 = ["王五","钱六"]

lst.append("张三")   #追加在最后
lst.insert(1,"李四")    #根据下标添加元素
lst.extend(lst1)    #将一个lst加在最后

#结果  ['张三', '李四', '王五', '钱六']

    2.2、删除

lst = ['张三', '李四', '王五', '钱六']

lst.pop(1) #删除最后一个,也可以指定下标删除
lst.remove("王五") #删除指定元素
lst.clear() #清空集合

    2.3、修改

lst = ['张三', '李四', '王五', '钱六']

lst[0] = "哈哈" #指定下标修改
lst[0:2] = ["ok","no"] #切片修改
lst[0:2:2] = ["娃哈哈"] #如果有步长,则需要指定对应的数量

#结果   ['娃哈哈', 'no', '王五', '钱六']

    2.4、查询

lst = ['张三', '李四', '王五', '钱六']

for i in lst:
    print(i)

#结果  张三 李四 王五 钱六

    2.5、切片

lst = ['张三', '李四', '王五', '钱六']

#切片的用法 lst[start:end:step] step为步长,可以省略,默认为1,包括开头,不包括结尾
print(lst[0:2])    #['张三', '李四']
print(lst[0:3:2]) #['张三', '王五']

    2.6、其他的方法

lst = ['张三', '李四', '王五', '钱六']

lst.count("张三")    #查询出lst中的张三的个数

lst.sort()    #排序,默认升序
#['张三', '李四', '王五', '钱六']

lst.sort(reverse=True)    #倒序
#['钱六', '王五', '李四', '张三']

lst.reverse()    #['钱六', '王五', '李四', '张三']

len(lst)    #lst长度

2、元祖(tuple)

  1、俗称不可变的列表,又被成为只读列列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里里面可以放任何数据类型的数据, 查询可以,循环也可以, 切片也可以,但就是不能改,这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象

tu = (1,[],2)
tu[1].append("张三")    #(1, ['张三'], 2)

  2、如果只有一个元素,则需要在后面加一个逗号,否则他不是元祖

tu = (1,)

  3、查询方法

for i in tu:
    print(i)

  4、其他方法

tu = (1,2,3,["张三","李四"])

tu.index(3)    #找出某个对象第一个匹配项的索引位置,如果这个对象不在元祖中会报一个异常。
len(tu)    #计算长度
tu.count(1)    #查询出现的次数

 for num in range(10):  #range可以帮我们获取到⼀一组数据. 通过for循环能够获取到这些数据
   print(num)

3、键值对(dict)

  1、字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成,在dict中key是唯一的, 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key必须是可hash的,如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的,那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址而规定的.

  2、已知的可哈希(不可变)的数据类型: int, str, tuple, bool,不可哈希(可变)的数据类型: list, dict, set

  3、语法 :{key1: value1, key2: value2....}

  4、新增

dic = {}

dic.setdefault("name","李四")    #如果没有相同的key,则会新增。否则不生效
dic["age"] = 20
#结果:{'name': '李四', 'age': 20}

  5、删除

dic = {'name': '李四', 'age': 20, 'sex': '', 'addr' : '山西', 'user' : 'admin', 'passwd' : 'admin'}

dic.pop("name") #删除指定元素,不存在会报错
dic.popitem()    #随机删除元素
del dic["sex"] #删除指定元素,不存在会报错
dic.clear()    #清空dict

   6、查询

dic = {'name': '李四', 'age': 20, 'sex': '', 'addr' : '山西', 'user' : 'admin', 'passwd' : 'admin'}

dic["name"]    #如果name不存在,则报错
dic.get("name") #如果name不存在,则返回None
dic.get("a","haha")    #如果a不存在,则返回haha

  7、其他操作

dic = {'name': '李四', 'age': 20, 'sex': '', 'addr' : '山西', 'user' : 'admin', 'passwd' : 'admin'}

dic.keys()    #返回所有dict的key组成的list集合,不存在会返回空list
dic.values()    #返回所有dict的value组成的list集合,不存在会返回空list

dic.items()    #返回所有的键值对,格式为:[(),()],list中包含tuple类型
#上面的可以解构,如下
# a,b = [1,2]
for key,value in dic.items():
    print(key, value)

 4、集合(set)

  1、set集合是python的一个基本数据类型,一般不是很常用, set中的元素是不重复的,无序的,里面的元素必须是可hash的(int, str, tuple,bool),我们可以这样来记,set就是dict类型的数据但是不保存value, 只保存key,set也用{}表示

  2、注意: set集合中的元素必须是可hash的, 但是set本身是不可hash的,set是可变的。

set1 = {'1','alex',2,True,[1,2,3]} # 报错
set2 = {'1','alex',2,True,{1:2}} # 报错
set3 = {'1','alex',2,True,(1,2,[2,3,4])} # 报错

  3、set中的元素是不重复的, 且无序的,使用这个特性我们可以去重

s = {"周杰伦", "周杰伦", "周星星"}
print(s)
#结果:{'周星星', '周杰伦'}
set = {1,"name",True,False,(1,2,3)}  #结果{False, 1, 'name', (1, 2, 3)},因为1和True是一样的,所以被去重

  4、新增

set = {1,"name",True,False,(1,2,3)}

set.add("abs")    #添加abs到集合,如果存在则不加
set.update("cd")    #会把c和d分开加入到set中
set.update(["e","f"])    #会把e和f分开加入到set中

#结果    {False, 1, 'd', 'e', 'abs', (1, 2, 3), 'c', 'f', 'name'}

  5、删除

set = {1,"name",True,False,(1,2,3)}

set.pop()    #随机删除一个元素
set.remove("name")    #直接删除name,如果name不存在,则会报错
set.clear()    #清空set,打印出来是set(),因为要和dict区分

  6、修改(先删除,后新增)

  7、其他操作

    7.1、交集

# 交集
# 两个集合中的共有元素
print(s1 & s2) # {'⽪皮⻓长⼭山'}
print(s1.intersection(s2)) # {'⽪皮⻓长⼭山'}

    7.2、并集

# 并集
print(s1 | s2) # {'刘科⻓长', '冯乡⻓长', '赵四', '⽪皮⻓长⼭山', '刘能'}
print(s1.union(s2)) # {'刘科⻓长', '冯乡⻓长', '赵四', '⽪皮⻓长⼭山', '刘能'}

    7.3、差集

# 差集
print(s1 - s2) # {'赵四', '刘能'} 得到第⼀一个中单独存在的
print(s1.difference(s2)) # {'赵四', '刘能'}

    7.4、反交集

print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'}
print(s1.symmetric_difference(s2)) # {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'}

    7.5、子集

print(s1 < s2) # set1是set2的⼦子集吗? True
print(s1.issubset(s2))

    7.6、超集

print(s1 > s2) # set1是set2的超集吗? False
print(s1.issuperset(s2))

 

posted @ 2019-07-05 16:24  IT-凯  阅读(245)  评论(0编辑  收藏  举报