Python 列表-元组-字典
创始人
2024-05-23 23:44:47
0

文章目录

    • 列表和元组
      • 列表
        • 切片
        • 遍历
        • 列表新增元素
        • 查找和删除
      • 元组
    • 字典
        • 增删
        • 遍历
        • 合法key类型-可哈希hash()

列表和元组

用一个变量来表示多个数据,类似于其他语言的数组.

  • 大部分相等,区别是

​ 列表是可变的:创建好之后随时能改,(散装的)

​ 元组是不可变的:改不了(包装好的),只能换一个新的

列表

#创建列表
a=[]
print(type(a))
a=list()
print(type(a))#设定初始值,用,分割
b=[1,2,3,4]
print(b)#可以放不同类型的数据
c=[1,'hello',True,[4,5,6]]
print(c)#通过下标访问的方式,获取列表中的元素,从0开始数,到长度-1
print(b[1])
print(c[3])
print(c[3][2])#获取列表长度len
l=len(b)
print(l)#下标为负数,就是反向获取,-1就相当于len(b)-1
print(b[-1])#还可以通过下标修改值
b[1]=666
print(b)

切片

只是取出原有列表中的一部分,并不涉及到数据的拷贝,即使列表很大,切片的效率都很高效/

#切片
a=[1,2,3,4]
print(a[1:3])#切片操作,[1,3),下标左闭右开的范围#可以省略边界
print(a[1:])
print(a[:2])
print(a[:])
#下标为负数也可
print(a[:-1])
#指定步长
a=[1,2,3,4,54,65,7,87,9]
print(a[::2])
print(a[1:-1:2])
#步长为负数,就是从后往前打印
print(a[-1:1:-1])
print(a[::-1])
#不是有效范围下标的时候不会出现异常,而是尽可能把符合要求的元素拿到
print(a[1:100])

遍历

a=[1,2,3,4,5,6]
#in 后面是可迭代对象就行#将列表中的每个元素对elem 赋值,不会对原列表造成影响
for elem in a:# print(elem)elem+=1
print(a)    #[1, 2, 3, 4, 5, 6]
print(elem) #7#下标的方式遍历取到了列表元素,可以修改
for elem in range(0,len(a)):a[elem]+=10
print(a)    #[11, 12, 13, 14, 15, 16]i=0
while i

列表新增元素

# append 搭配列表对象a来一起使用,也叫作方法
# 不是独立的函数(type,print,input,len)
a = [1, 2, 3, 4, 5]
a.append('hello')
print(a)    #[1, 2, 3, 4, 5, 'hello']#insert()任意位置插入
b=[1,2,3,4,56,6]
b.insert(1,'hello')
print(b)    #[1, 'hello', 2, 3, 4, 56, 6]
b.insert(100,'xiaoawei')
print(b)    #[1, 'hello', 2, 3, 4, 56, 6, 'xiaoawei']

查找和删除

# +拼接两个列表,生成一个新的列表
a=[1,2,3,4,5,6]
b=[7,8,9,0]
print(a+b)  #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]#extend进行拼接,把后一个列表直接拼接到前一个的列表
a.extend(b)
print(a)    #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(b)    #[7, 8, 9, 0]
#extend没有返回值,那一个变量None接收返回值
c=a.extend(b)
print(c)    #None#+=实现
a+=b    #a=a+b,先产生一个新的列表,再有一个重新赋值的操作,然后把旧值释放
print(a)    #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(b)    #[7, 8, 9, 0]

元组

# 创建元组
a=()
b=tuple()a=(1,2,3,4,5)
b=(1,2,3,"hello",[1,2,3])#下标访问
print(a[1])
print(a[-1])
# print(a[100])   #IndexError: tuple index out of range#切片
print(a[1:3])for elem in a:print(elem)print(3 in a)
print(a.index(3))print(a+b)#修改不可取TypeError: 'tuple' object does not support item assignment
# for i in range(0,len(a)):
#     a[i]+=1
# print(a)
# a[0]=100
# a.append(5)
# a.pop()
# a.insert(1,5)
# a.extend(b)#当进行多元赋值的时候,本质就是按照元组的方式进行工作的
def getPoint():x=10y=20return x,y#构建一个元组,然后赋值
x,y=getPoint()
print(type(getPoint())) #
  • B调用A实现的函数接口,传参的时候避免A函数将我的参数内容进行修改,所以使用元组的方式作为参数,避免这样的纠结.

  • 元组是不能修改的->不可变对象是可以哈希的

字典

键值对Key-Value,映射关系.字典中可以同时包含很多的键值对,同时要求这些键不能够重复.

对于字典来说,使用in或者[]来获取value都是比较高效的,本质是字典的背后使用了哈希表.

对于列表来说in就比较低效,使用[]比较高效,类似顺序表取下标.

#创建字典
a={}
b=dict()
#key类型有约束,value类型随便
#最后键值对的,可写可不写
a={'id':1,'name':'张三',100:'xiabio'
}
print(a)#查找# in or not in (只是判定key的存在)
print('id' in a)
print('classid' not in a)#[]直接获取value
print(a['id'])
print(a[100])
# print(a['classid']) #KeyError: 'classid'读操作,没有怎么读到显示器

增删

#使用[]进行新增
a={'id':1,'name':'张三'
}
#不存在,往里面写入
a['score']=90
print(a)
#已存在的值,叫修改
a['score']=100
print(a)#删除,,根据key
a.pop('name')
print(a)

遍历

遍历值的就是把一个可迭代对象,元素依次取出来,并进行操作.字典被设计出来的初衷是为了增删改查,不是为了实现遍历.哈希表能够以常数级时间复杂度,完成增删改查.无论字典中有多少个元素,增删改查都是固定时间,不会因为元素多了就变慢了.字典中的key值是不能重复的.

C++中的键值对存储的是无序的,但是python中的字典做过特殊处理,保证存储顺序是按照插入顺序的.

a={'id':1,'name':'张三','score':90
}
for key in a:print(key,a[key])
# keys values items
print(a.keys()) #dict_keys(['id', 'name', 'score'])
print(a.values())
print(a.items())   #dict_items([('id', 1), ('name', '张三'), ('score', 90)])for key,value in a.items():print(key,value)

合法key类型-可哈希hash()

hash()计算变量哈希值,不可变的对象基本都可哈希

print(hash('xiaoawei')) #字符串
print(hash((1,2,3)))    #元组
print(hash(True))
print(hash(1))print(hash([1,2,3]))    #TypeError: unhashable type: 'list'
print(hash({ }))    #TypeError: unhashable type: 'dict'

相关内容

热门资讯

张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...
“犹如……,好像……。”如何造... “犹如……,好像……。”如何造句?用“犹如……,好像……。”造句例子如下:岁月犹如长河,人生如同奔流...