数据类型

4、list 列表

list是Python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是用[]括起来的,每个元素以逗号隔开,而且他里面可以存放各种数据类型,比如:

li = [1,2,True,"哈哈",(1,2,3,"小明"),[1,2,3'小明'],{name:'alex'}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,并且列表是有序的,有索引值,可切片,方便取值。

列表的操作:

li = ['刘德华','吴彦祖','周星驰','彭于晏'] #创建数组
print(li)

# ----- 增 ----- append insert extend
li.append("张艺兴") #在列表尾部追加"张艺兴"
print(li)
li.insert(1,"张艺兴")
print(li) #在索引为1的位置插入"张艺兴"
li.extend("罗志祥") #迭代着插入
print(li)# ['刘德华', '吴彦祖', '周星驰', '彭于晏', '罗', '志', '祥']
li.extend(["罗志祥"]) # 将list列表迭代
print(li)

# ----- 删 ------ pop remove del clear
l1 = li.pop(1) # 删除指定索引处的值 返回值为删除的元素
print(l1)
li.remove("刘德华") # 删除指定元素
li.remove("123") # 不存在则报错
print(li)
del li[0:5] #删除指定切片长度的元素 顾头不顾尾 无返回值 del-关键字
print(li)
li.clear() #清除list中所有的元素
print(li) # []

# ----- 改 ------- 直接赋值 切片
li[0] = "张艺兴" #利用直接赋值的方式修改
print(li)
li[0::2] = ["a",'b','c'] # Wrong!!步数不是1的时候,必须匹配元素个数
# attempt to assign sequence of size 3 to extended slice of size 2
print(li)

# ----- 查 ------ 切片查 或者循环去查
#例如查'吴彦祖'
cou = 0
for i in li:
    if i == "吴彦祖":
        print(cou)
    else:
        cou += 1

# ----- 其他操作 ------ count index sort reverse
# count() 方法用于统计某个元素在列表中出现的次数
cou = li.count('刘德华')
print(cou)

# index()方法用于从列表中找到某个值第一个匹配项的索引
cou = li.index("周星驰")
print(cou)

# sort()方法用于在原位置对列表进行排序 默认升序
li_1 = [3,2,1,5,7,6]
li_1.sort() #升序
li_1.sort(reverse=True) #降序
print(li_1)

# reverse() 将列表中的元素反向存放
li.reverse()
print(li)

列表的嵌套:使用降维操作,一层一层看

 lst = [1, "太白", "wusir", ["马虎疼", ["可口可乐"], "王剑林"]] # 找到wusir
print(lst[2])
# 找到太白和wusir
print(lst[1:3])
# 找到太白的白字
print(lst[1][1])
# 将wusir拿到. 然后首字母大写. 再扔回去
s = lst[2]
s = s.capitalize()
lst[2] = s
print(lst)

5、tuple 元组

元组和元组的嵌套:

元组:俗称不可变的列表,又称只读列表,元组也是Python的基本数据类型之一,用小括号括起来,里面可以放任何数据类型的数据,可以查询,可以循环遍历,可以切片,但就是不可以修改

 tu = (1, "太白", "李白", "太黑", "怎么黑") print(tu)
print(tu[0])
print(tu[2])
print(tu[2:5]) # 切片之后还是元组
# for循环遍历元组
for el in tu: print(el)
# 尝试修改元组
# tu[1] = "马虎疼" # 报错 'tuple' object does not support item assignment
tu = (1, "哈哈", [], "呵呵")
# tu[2] = ["fdsaf"] # 这么改不行
tu[2].append("麻花藤") # 可以改了. 没报错 tu[2].append("王剑林")
print(tu)
关于不可变, 注意:

元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组

元组也有count(), index(), len()等方法. 可以自己测试使用

range:

range可以帮我们获取到一组数据. 通过for循环能够获取到这些数据. 顾头不顾尾
 for num in range(10): print(num)
for num in range(1, 10, 2): print(num)
for num in range(10, 1, -2): print(num)

6、dict 字典

字典(dict)是Python中唯一一个映射类型,是以{}括起来的键值对组成。

在dict中key是唯一的,在保存中,根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为哈希算法。

key:必须是可哈希的,也就是不可变的(int str tuple bool),为了能准确计算内存地址而规定的。

dict保存的数据不是按照我们添加进去的顺序保存的,是按照哈希表的顺序保存的,而哈希表不是连续的,所以不能进行切片工作,只能通过key来获取dict中的数据。

字典的操作:

#dict - 字典 由key:value组成,用{}
#其中key取值:不可变类型(例如str、int、bool、tuple),即可哈希  value:任意类型
#dict的创建:
dic = {'name':'xin','age':18,'address':'beijing'}
# print(dic)
#dict 的操作 -- 增删改查
# ------ 增 -------
#
dic['sex'] = 'male' #key值不存在直接新增
print(dic)
dic['name'] = 'liang' #key值存在则进行覆盖
print(dic)
  # ② 设置默认值
dic.setdefault('sex') #只写一个key,value默认为None
print(dic)
dic.setdefault('sex','male')#key值不存在直接新增
print(dic)
dic.setdefault('name','liang') #key值存在则不进行任何操作
print(dic)

# ----- 删 ----- clear()  pop(key) popitem() del
dic.clear() #清空内容
print(dic) # {}
dic.pop('name') #删除key = name 的键值对
dic.pop('123') #key不存在报错 KeyError: '123'
print(dic)
print(dic.popitem()) #结果为 ('age', 18) key value元组
k,v = dic.popitem() #解构 数量必须匹配
print(k,v) #k = name v = xin
del dic['name'] #删除key = name的键值对
print(dic)

# ------- 改 -------
dic['name'] = 'liang' #直接修改

dic2 = {'name':'xin','age':32,'id':1,'family':4}
dic.update(dic2)
print(dic) # dic 相对于 dic2 中 key值存在,则dic2覆盖value值,不存在,则新增到dic中
print(dic2) #dic2 不变

# ------- 查 -------
print(dic['name']) #根据key输出value
print(dic['123']) #key不存在报错
print(dic.get('123','不存在')) #key不存在则输出'不存在'

# ------- 其他操作 -----
print(dic.keys()) #输出所有的key,结果是 dict_keys(['address', 'name', 'age'])
print(dic.values()) #输出所有的value
li = dic.items() #dict_items([('name', 'xin'), ('age', 18), ('address', 'beijing')])
for k,v in li: #遍历
    print(k,v)

7、set 集合

保存大量数据,不可以重复

原文地址:https://www.cnblogs.com/liangying666/p/9133313.html