Python数据类型之列表元组(有序)字典集合

列表

#用[]括起来
li1= ['long','cong','ke','pan','yan','wen','yu'];print(li1)
#可以组合不同类型的数据
li2 = ['long',1,'ke',2,'yan',3,'yu',4,5,6];print(li2)
#列表可以嵌套
li3 = ['sd',li1,li2];print(li3)
len(li3) #列表长度 3
for i in range(3):
    print(li3[i])
    
li3[2][1] # 1

#切片索引
li1[0:5] #不包括位置5
li1[0:5:2] #间隔为2
li1[5:0:-1] #反向索引
li1[1:] #只给出起始位置
li1[:3] #只给出结束位置

#列表运算 + *
li4 = li1+li2;print(li4) #列表拼接 +
li5 = li1*2 #列表循环两遍

#列表常用函数
li1.index("ke") #返回元素索引值
li1.append("kk") #在末尾添加元素
li1.insert(1, "ff") #Insert object before index. insert(index,object)
print(li2)

li2.extend(li1) #把li1放在li2后面
li2.extend(['ll','rr',"xzz",'yy'])

li2.count("ke") #统计元素出现次数

huluwa = ['kk','yy','ff','xzz','dd','rr','ll']
huluwa.reverse() #反转列表
huluwa

#删除列表元素
huluwa.remove('kk') #元素
del huluwa[1] #使用条件是 已知索引

huluwa = ['kk','yy','ff','xzz','dd','rr','ll']
name =  huluwa.pop() #删除末尾的值
print(name+'你真帅')

#列表解析式 
[x for x in range(10)]
[x*x for x in range(10)]
[x*x for x in range(10) if x*x <50]

元组

#元组(tuple)  用小括号;元素不可修改
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d"; #没有括号,默认为元组类型
tup4 = (50,) #若只有一个元素,用","消除歧义 tup1 = () 空元祖

tup1[0:3] #切片索引,类似于列表
L = ('spam', 'Spam', 'SPAM!')
L[-1] #返回末尾值
L[::-1] #反向索引,反转显示


#元组中的元素不可修改,但是可以对整个元组操作
tup4 = tup1 + tup2
tup5 = tup1*2

#若元组中,有一个元素是列表,那可以修改列表的元素
tup6 = ('a','b',[2,0,5,1,4])
tup6[2][1] = "zero"
tup6

#删除元组 
del tup4

字典

#字典 键唯一,值可不唯一

#字典的创建
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} # 传入关键字
dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
a = dict.fromkeys(['name','age','job']) #只创建键
a['name'] = 'kk' #再添加值

dict1.get('Name')
dict1.get('aa',"没这个键") #	dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值

dict1.get(['Name','Age'])


   

dict1.keys() #以列表返回一个字典所有的键
dict1.values() #以列表返回字典中的所有值
'Name' in dict1  #in 如果键在字典dict里返回true,否则返回false

#删除
b.clear() # 清空字典所有条目
del dict1["Class"] # 删除键是'Name'的条目

#字典的遍历
for key in dict1.keys():
    print(key)
    
for value in dict1.values(): 
    print(value)

for key,val in dict1.items(): #dict.items() 以列表返回可遍历的(键, 值) 元组数组 
    # print(key,':',val);
    print('%10s :  %s'%(key,val))

创建有序的字典

#创建有序的字典
from collections import OrderedDict

dict2 = OrderedDict()

dict2['for'] = 'for循环'
dict2['pass'] = '空语句'
dict2['len'] = '求长度'

for key,value in dict2.items():
    print(f"键:{key:10}值:{value}\n")

深拷贝与浅拷贝

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,
python并没有拷贝这个对象,而只是拷贝了这个对象的引用
(1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
(2)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
(3)深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
详情参见深拷贝浅拷贝

集合

names = ['Wangdachui', 'Niuyun', 'Wangzi', 'Wangdachui', 'Linling', 'Niuyun']
namesSet = set(names)
print(namesSet)

months1 = {"Jan","Feb","Mar"}
months1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值