Python之路-python数据类型(列表、字典、字符串、元祖)操作
一、列表:
列表的语法,以中括号开通和结尾,元素以逗号隔开。例如:name = []
列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1.
1、增加
#name = ["zhangsan","lisi","wanger","liwu"]
#name[1] = "wang"#在列表name的下标为1的位置增加一个元素"wang",当然这个下标原来的元素也就没有了,也同样是修改
#print(name)
#['zhangsan', 'wang', 'wanger', 'liwu']
插入法,name.insert(下标,要插入的元素名称)
#name.insert(0,"li")
#name.append("haha")#增加到最后一个 2、删除
#del name[1]#删(del并不是列表的专属,它可以也可以删除别的,例如直接删除变量)
#name.pop(0)#默认删除最后一个,可以加上列表下标
#name.remove("zhangsan") 3、修改
#name = ["zhangsan","lisi","wanger","liwu"]
#name[1] = "wang"#
#['zhangsan', 'wang', 'wanger', 'liwu'] 4、统计(count) #name = ["zhangsan","lisi","wanger","liwu"]
#print(name.count("zhangsan"))
#1 #这里的1是代表zhangsan这个元素只有一个
5、索引(获取元素的下标)(index)
#name = ["zhangsan","lisi","wanger","liwu"]
#print(name.index("lisi"))
#1 #这里的1则表示lisi这个元素在列表中的下标是1 6、排序(sort)
#name = ["zhangsan","lisi","wanger","liwu","123","456"]
#print(name.sort())
#TypeError: unorderable types: int() < str()#python3里面不同类型的数据不能排序,python2.x里面可以排序,按照ASCII码排序。 7、翻转(reverse)
# name = ["zhangsan","lisi","wanger","liwu","3","2","1"]
# name.reverse()
# print(name)
#['1', '2', '3', 'liwu', 'wanger', 'lisi', 'zhangsan'] 8、扩展(extend)name = ["zhangsan","lisi","wanger","liwu","3","2","1"]
name_2 = ["zhang","wang","li"]
name.extend(name_2)
print(name) 9、拷贝(浅copy和深copy)
浅copy
# name = ["zhangsan","lisi","wanger","liwu",["beidu","wangyi","sogou"]]
# name_2 = name.copy()
# print(name)
# print(name_2)
# name[0] = "wangmazi"
# name[4][0] = "beijing"
# print(name)
# print(name_2)
结果:
我们先打印name和name_2,发现已经copy完了,两个数据一模一样
['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
然后我们在name里面修改zhangsan为wangmazi,发现name_2并没有跟着name变化,说明name_2已经独立为一个新的列表(列表的第一层数据已经完全被复制)。
但是,我们接着在name里面的的第二层列表修改baidu为beijing,发现name和name_2一模一样,这说明,列表只copy第一层数据,第二层开始就是共享一个数据(只复制 第一层)
['wangmazi', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]
['zhangsan', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]
深copy
# import copy(我们这里引用了copy这个模块,这里面的copy.copy跟列表中的copy一模一样)
#
# name = ["zhangsan","lisi","wanger","liwu",["beidu","wangyi","sogou"]]
# name_2 = copy.deepcopy(name) #注意这里,deepcopy意为深copy,
# print(name)
# print(name_2)
# name[0] = "wangmazi"
# name[4][0] = "beijing"
# print(name)
# print(name_2) 不废话,看结果
['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
['wangmazi', 'lisi', 'wanger', 'liwu', ['beijing', 'wangyi', 'sogou']]
['zhangsan', 'lisi', 'wanger', 'liwu', ['beidu', 'wangyi', 'sogou']]
上面所示标红的字体看出,深copy会将更深层次的数据完完全全的copy一份。
二、字符串操作:
1、驼峰字体
#a = ("python oldboy edu")
#print(a.replace("p","ooo"))#更改
#print(a.title())#更改成驼峰字体 #oooython oldboy edu
#Python Oldboy Edu(每个单词的首字母将变成大写) 2、判断能否成为数字
#test = "110"
#print(test.isdigit())#值110能成为数字返回True
#test_2 = "baidu"
#print(test_2.isdigit())#但是baidu不会成为数字返回False #True
#False 3、判断是否符合变量名命名规则
#test = "Name-1"
#print(test.isidentifier())#因为横杆在python中的意思为减号,所以不能是变量名的一部分
#test_2 = "Name_1"
#print(test_2.isidentifier())
>>>False
>>>True 4、左右补齐 #print("我爱你中国".center(50,"*"))
>>>**********************我爱你中国*********************** 三、字典
字典的简单用法
name = {} #以两个大括号开始结尾 字典的特性:
1、key永远唯一
2、没有顺序 1、增加
info = {
'stu1101': "baidu",
'stu1102': "tengxun",
'stu1103': "alibaba",
}
#print(info)#修改\增加。
#info["stu1101"] = "哈哈" #字典里有key是stu1101的话就是修改,如果没有此key的话,就会新增。
#print(info)
>>>{'stu1102': 'tengxun', 'stu1101': 'baidu', 'stu1103': 'alibaba'}
>>>{'stu1102': 'tengxun', 'stu1101': '哈哈', 'stu1103': 'alibaba'} 2、删除
#删除
#del info["stu1101"] #删除
#info.pop("stu1101") #随机删除
#info.popitem() 3、查找
#print("stu1101" in info)#标准用法 #print(info.get("stu1101"))#获取 #print(info["stu1101"])#获取,但是key不存在就报错,但是get不会,.get不存在的话就返回None
通过key和values查找
#print(info.keys())#只打印key键,取出的值变成了list
#print(info.values())#z只打印valeus值,取出的值变成了list >>>dict_keys(['stu1102', 'stu1101', 'stu1103'])
>>>dict_values(['tengxun', 'baidu', 'alibaba'])
4、转换
#print(info.items())
>>>{'stu1101': 'baidu', 'stu1102': 'tengxun', 'stu1103': 'alibaba'} #原数据
>>>dict_items([('stu1101', 'baidu'), ('stu1102', 'tengxun'), ('stu1103', 'alibaba')])#转换后的数据类型
5、字典的循环
#dict循环
#方法1
# for key in info:
# print(key,info[key]) #方法2
# for k,v in info.items(): #会先把dict转成list,数据里大时建议不要使用
# print(k,v) 6、字典的多级嵌套
# info = {
# "北京":{
# "海淀":["中关村","五道口"]
# },
# "上海":{
# "哈哈":["呵","呵呵"]
# },
# }
# print(info)
# info["上海"]["哈哈"][0] = "屌丝" #这里注意,字典和列表都可以用中括号[]取值,但是列表的话一般是用下标,这里指出的是直接写元素名称
# print(info)
>>>{'上海': {'哈哈': ['呵', '呵呵']}, '北京': {'海淀': ['中关村', '五道口']}}
>>>{'上海': {'哈哈': ['屌丝', '呵呵']}, '北京': {'海淀': ['中关村', '五道口']}} Day1补充:
1、pyc是什么鬼
首先,我们知道计算机是无法直接识别高级语言。运行一个程序是,有个"解释器",将语言解释成计算机能识别的语言,语言分为编译型和解释型。
编译型:
例如C语言,运行之前需要先编译——解释成计算机能识别的语言(解释一次就OK了)
解释型:
例如Ruby,每次运行都需要python解释器将程序解释成机器能识别的语言。往下看,那么问题来了(确认每次都解释一遍吗?) 每次运行一个python程序后python解释器都需要程序解释成计算机能明白的语言,这个时候程序对应目录就会生成一个.pyc的文件。为什么呢?接着说,这个pyc是干嘛的呢,其实
一个python程序解释完以后都会生成一个.pyc的文件,下次再运行这个程序就不需要再解释一遍,这样大大提高了速度,但是如果源代码发生的变化怎么办呢,每次运行python程序
都会自动寻找一遍有没有对应的解释完成的pyc文件,如果有判断pyc是不是最新的,如果不是最新的就再解释一遍,如果是最新的就直接运行。
这样看来你还好意思说python是一个解释型语言吗?
Python之路-python数据类型(列表、字典、字符串、元祖)操作的更多相关文章
- Python之路-基础数据类型之字典 集合
字典的定义-dict 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成,字典是无序的,key是不可修改的.dic = {1:'好',2:'美',3:'啊'} 字典的操 ...
- python之路-基本数据类型之str字符串
1.概念 python中用',",''',"""引起来的内容称为字符串,可以保存少量数据并进行相应的操作 #先来看看str的源码写了什么,方法:按ctrl+鼠标 ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- 第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题
1.简述位.字节的关系 位(bit)是计算机中最小的表示单元,数据传输是以“位”为单位的,1bit缩写为1b 字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B 8bit = 1Byte ...
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- Python之路Python内置函数、zip()、max()、min()
Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print(" ...
- 自学Python之路-Python核心编程
自学Python之路-Python核心编程 自学Python之路[第六回]:Python模块 6.1 自学Python6.1-模块简介 6.2 自学Python6.2-类.模块.包 ...
- 自学Python之路-Python并发编程+数据库+前端
自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3
随机推荐
- ACM A problem is easy
A problem is easy 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 When Teddy was a child , he was always th ...
- ios cocos2d 画线出现闪烁问题
根据http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/ 用cocos2d ...
- UVA 10791 - Minimum Sum LCM(坑)
题目链接 不知道为什么,我用cin,cout就是过不了...改成scanf过了... 还是我居然理解错题意了,已经不能用看错了...至少两个数字,我理解成两个数字了,还写了个爆搜... #includ ...
- 【BZOJ3223】 Tyvj 1729 文艺平衡树 Splay
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 ...
- 【BZOJ2821】作诗(Poetize) 分块
Description 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次, ...
- 【Oracle】ORA-28000: the account is locked-的解决办法
ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...
- weblogic部署项目包,报空指针错误
贴出 报错代码 <weblogic> <> <> <1479765377228> <BEA-240003> <Console enco ...
- CodeForces 670D1 暴力或二分
今天,开博客,,,激动,第一次啊 嗯,,先来发水题纪念一下 D1. Magic Powder - 1 This problem is given in two versions that diff ...
- Idea_Intellij Idea 12 生成serialVersionUID的方法
默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需 ...
- 20145330《Java程序设计》第三周学习总结
20145330 <Java程序设计>第三周学习总结 第三周知识的难度已经逐步上升,并且一周学习两章学习压力也逐渐加大,需要更高效率的来完成学习内容,合理安排时间. 类与对象 对象(Obj ...