Python修炼之路-数据类型
Python编程之列表
列表是一个使用一对中括号"[ ]" 括起来的有序的集合,可以通过索引访问列表元素,也可以增加和删除元素。
列表的索引:第一个元素索引为0,最后一个元素索引为-1。
#列表的定义与访问
>>> L = ['python', 11, True]
>>> print(L) #['python', 11, True]
>>> L[-1] # True
>>> L[0] # 'python'
>>> L[2] # True
列表常用方法

实例
#***************插入*******************
>>> L = ['python', 11, True]
>>> L.append('hello') #append插入
>>> L
# ['python', 11, True, 'hello']
>>> L.insert(0,False) #指定位置插入
>>> L
#[False, 'python', 11, True, 'hello']
>>> L.insert(10,'world') #插入索引区别
>>> L
#[False, 'python', 11, True, 'hello', 'world']
>>> L[5]
#'world' #***************删除*******************
>>> L = ['python', 11, True]
>>> L.pop() #True #pop弹出,默认弹出最后一个
>>> L #['python', 11]
>>> L.pop(0) #'python' #pop指定位置弹出
>>> L #[11]
>>> L = ['python', 11, True]
>>> L.remove(11) #remove删除
>>> L #['python', True]
>>> L = ["A","B","C","D","E"]
>>> del L[2] #删除一个元素
>>> L #['A', 'B', 'D', 'E']
>>> del L[2:] #删除一个范围内的元素
>>> L #['A', 'B']
#***************更新*******************
>>> L = ['python', 11, True]
>>> L[2] = False
>>> L #['python', 11, False]
#***************排序与索引*****************
>>> L.sort(reverse=True) #排序
>>> L #['E', 'D', 'C', 'B', 'A']
>>> L = ["A",1,"Bob"] #注意不能和数字在一起排序
>>> L.sort()
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
L.sort()
TypeError: unorderable types: int() < str()
>>> L = ["A","","Bob"] #转换成字符串即可
>>> L.sort()
>>> L #['1', 'A', 'Bob']
>>> L.reverse() #参考上面reverse=False
>>> L #['Bob', 'A', '1']
#***************扩展**********************
>>> M = ["",2,"C"]
>>> L.extend(M)
>>> L #['Bob', 'A', '1', '1', 2, 'C']
#***************其他用法*******************
>>> L = ["A","B","C","D","E"]
>>> L.index("B") #1 返回索引值
>>> L.count('C') #1 统计"value"出现的次数
列表切片
列表切片:用于从列表或元组中截取元素。
截取原则:自左向右截取,顾头不顾尾原则。
usage: if the first index is ‘0’ or the last one, which could be ignored; Meanwhile slice could appoint the third parameter that means intercept one element out of every N element.
L[1:3]: it means that the index is from one to three, but it doesn’t include this element which index is three.
>>> L = ['A',1,True,'a']
>>> L[1:3] #[1, True]
>>> L = ['A',1,True,’a’]
>>> L[:2] #['A', 1]
>>> L[:] #['A', 1, True, 'a']
>>> L = range(1,10)
>>> L[2::3] #[3, 6, 9]
>>> L[2:7:3] #[3, 6]
>>> L = range(1,11)
>>> L
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> L[-5:-1]
[6, 7, 8, 9]
>>> L[-5:]
[6, 7, 8, 9, 10]
>>> L[-5::3]
[6, 9]
字符串切片处理
>>> 'asdfghjkl'[:3]
'asd'
>>> 'asdfghjkl'[-3:]
'jkl'
>>> 'asdfghjkl'[::2]
'adgjl'
遍历列表
#**********enumerate用法:返回列表的索引以及元素值********************
f = open("file","r",encoding="utf-8") #文件句柄,输出中文时注意文件编码
count = 0
for index, line in enumerate(f):
count += 1
print(count) #9 一共有多少行
print(index) #8 最后一个索引值
f.close()
Python编程之元组
元组(tuple):一个用括号"()"括起来的有序序列,但是一旦创建便不可修改,所以又叫只读序列。
元组只有两个方法:count与index,参考list。
# if there is one element in tuple, there should be add one ‘,’ after element.
>>> t = ('python',11,True)
>>> t[0]
'python'
>>> t = (1) #这只是一个数字,不是元组
>>> t
1
>>> t = (1,)
>>> t
(1,)
一个特殊的元组
>>> t = ('a','b',['A','B'])
>>> t
('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y‘
>>> t
('a', 'b', ['X', 'Y'])

The unchangeable means tuple appointed should not be changed. Example, if appointed to a, it shouldn’t change to b.
#关于更多的赋值与指向,可以参考深浅拷贝。
Python编程之字符串操作
字符串定义:用单引号或双引号括起来任意字符。
特性:不可修改
转义字符:\
# \n : Enter \t: tab \\: \ \': '
raw string: 可以不使用"\"来转义, 禁止转义。
print(r'\(~_~)/(~_~)/')
#\(~_~)/(~_~)/
使用:"""..."""或者'''...'''表示多行字符串。
print('''"To be, or not to be\": that is the question.
Whether it\'s nobler in the mind to suffer.''')
字符串常用方法
| S.lower() | 小写 |
| S.upper() | 大写 |
| S.swapcase() | 大小写互换 |
| S.capitalize() | 首字母大写 |
| S.title() | 只有首字母大写,其余为小写 |
| S.ljust(width,"fillchar") | 输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格 |
| S.rjust(width,"fillchar") | 右对齐 |
| S.center(width, "fillchar") | |
| S.zfill(width) | 把S变成width长,并在右对齐,不足部分用0补足,左边补0 |
| S.find(substr, [start, [end]]) | 返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索 |
| S.index(substr, [start, [end]]) | 与find()相同,只是在S中没有substr时,会返回一个运行时错误 |
| S.rfind(substr, [start, [end]]) | 返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号 |
| S.rindex(substr, [start, [end]]) | 计算substr在S中出现的次数 |
| S.replace(oldstr, newstr, [count]) | 把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换 |
| S.strip([chars]) | 把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None |
| S.rstrip([chars]) | |
| S.lstrip([chars]) | |
| S.expandtabs([tabsize]) | 把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个 |
| S.split([sep, [maxsplit]]) | 以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符 |
| S.rsplit([sep, [maxsplit]]) | |
| S.splitlines([keepends]) | 把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。 |
| S.join(seq) | 把seq代表的序列(字符串序列),用S连接起来 |
| S.encode([encoding,[errors]]) | 编码 |
| S.decode([encoding,[errors]]) | 译码 |
| S.startwith(prefix[,start[,end]]) | 是否以prefix开头 |
| S.endwith(suffix[,start[,end]]) | 以suffix结尾 |
| S.isalnum() | 是否全是字母和数字,并至少有一个字符 |
| S.isalpha() | 是否全是字母,并至少有一个字符 |
| S.isdigit() | 是否全是数字,并至少有一个字符,如果是全数字返回True,否则返回False. |
| S.isspace() | 是否全是空白字符,并至少有一个字符 |
| S.islower() | S中的字母是否全是小写 |
| S.isupper() | S中的字母是否便是大写 |
| S.istitle() | S是否是首字母大写的 |
| trantab = str.maketrans(intab, outtab) | 制表 |
| S.translate(trantab) | 翻译,和上面的结合使用 |
实例
poem = "gently I go as quietly as I came here"
print(poem.capitalize()) #首字母大写
# Gently i go as quietly as i came here print(poem.lower()) #所有字母变成小写
# gently i go as quietly as i came here print(poem.upper())
#GENTLY I GO AS QUIETLY AS I CAME HERE print(poem.swapcase())
# GENTLY i GO AS QUIETLY AS i CAME HERE print(poem.casefold()) #大写全部变小写
#gently i go as quietly as i came here print(poem.center(80,"-")) #输出80个字符,不足80个以“-”在字符串前后补充,字符串居中
#---------------------gently I go as quietly as I came here---------------------- print(poem.ljust(80,"*")) #打印80个字符,字符串在前,不足80的部分用"*"补充
# gently I go as quietly as I came here******************************************* print(poem.rjust(80,"-"))
#-------------------------------------------gently I go as quietly as I came here print(poem.zfill(80)) #把字符串变成80个字符宽度,不足80的用0补足
#0000000000000000000000000000000000000000000gently I go as quietly as I came here print(poem.count("e")) #统计 e 出现次数
# print(poem.find("e")) #返回字符串中第一次出现“e”的标号,如果没有则返回-1;
# 1 也可以poem.find("e",[start, [end]])设置返回,相当于 poem[start:end]
print(poem.rfind("e")) #返回poem中最后一次出现"e"的标号,如果没有则返回-1,
# print(poem.rindex("e")) #同rfind()
#
print(poem.replace("e","E",2)) #replace(oldstr, newstr, [count]) , 替换
#gEntly I go as quiEtly as I came here print("\n\tPython\t is\n".strip()) #把前后的空格,换行制表等字符去掉
print("\n\tPython\t is\n".lstrip())
print("\n\tPython\t is\n".rstrip())
print("\n\tPython\t is".rstrip("s")) #也可以指定字符去掉
'''
Python is
Python is Python is Python i
''' print(poem.encode()) #将字符串编码成bytes格式,解码为poem1.decode()
# b'gently I go as quietly as I came here' print(poem.endswith("re")) #判断字符串是否以 re结尾
# True print("Python is a programming \tlanguage".expandtabs(10)) #将\t转换成10个空格,默认是8个
# Python is a programming language print(poem.find('e')) #查找e,返回第一次找到'e'的索引;如果找不到,返回-1
# #------------------------format格式化输出--------------------------
msg = "{} is a programming language, using {}"
print(msg.format("Python",3))
# Python is a programming language, using 3 msg = "{1} is a programming language, using {0}"
print(msg.format("Python",3))
# 3 is a programming language, using Python msg = "{name} is a programming language, using {version}"
print(msg.format(version=3,name="Python"))
#Python is a programming language, using 3 print(msg.format_map({ 'name':'Python','version':3}))
#Python is a programming language, using 3 print(poem.index('h')) #返回字符串中第一个字符'h'的索引,如果没有会出现错误
# print('90Ads'.isalnum()) #字符串是否只包含字母或者数字,其他字符会返回False
#True print(''.isdigit()) #字符串是否是只包含数字,如果包括其他字符,小数点,字母则返回False
#True print(''.isnumeric()) #字符串是否只包含数字或者字符串数字
# True print(poem.isprintable()) #是否可打印 print(' '.isspace()) #是否为空格,含有其他字符返回False print(poem.istitle()) #是否为title,即每个单词的首字母是否为大写 print('AA133.'.isupper()) #字符串中字母是否全部为大写,可以包括数字,其他字符等,不能包括小写字母
#True print(poem.split()) #把poem分割成一个list,也可以指定分割符合分割次数,如下,默认分割符为空白符
#['gently', 'I', 'go', 'as', 'quietly', 'as', 'I', 'came', 'here'] print(poem.rsplit(" ",2)) #自右向左分割
# ['gently I go as quietly as I', 'came', 'here'] print("""111111111111
222222222222
3333333333""".splitlines(True)) #按照行分割符分割成一个list,如果为真,每行后会保留分割符 #['111111111111\n', '222222222222\n', '3333333333']
print("-".join(["python","is","a"])) #把["python","is","a"]序列,一个字符一个字符的用“-”串起来
#python-is-a intab = "aeiou" #This is the string having actual characters.
outtab = "" #This is the string having corresponding mapping character
trantab = str.maketrans(intab, outtab)
print(poem.translate(trantab))
#g2ntly I g4 1s q532tly 1s I c1m2 h2r2 print("as d".isidentifier()) #检测一段字符串可否被当作标志符,即是否符合变量命名规则
#False print(poem.partition("e")) #如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
#('g', 'e', 'ntly I go as quietly as I came here')
Python编程之字典
访问元素更快,但是需要更多内存,通过key来访问value,所以key是唯一的;
key-value是无序的,区别list;
key是不可变的,数字,字符串,元组都可以作为key,list除外。
可以通过if判断key是否在字典中: if key in dict:
字典的查找、修改、增加、删除等用法。
info = {
"stu1" : "Jack",
"stu2" : "Bob",
"stu3" : "Adam"
}
print(info)
# {'stu1': 'Jack', 'stu2': 'Bob', 'stu3': 'Adam'} #无序的,每次打印顺序会变动
#****************查找 ****************************
print(info["stu1"]) #不建议使用这种方式查找,如果所查元素不存在,会出错,Key error
print(info.get("stu1")) #查找,如果不存在返回None,安全获取
print("stu2" in info) #如果存在则返回True,判断是否存在;相当于python2.x中的info.has_key('stu2')
#True
#****************修改 *************************
info["stu3"] = "Mary" #如果存在,则是修改
print(info)
#{'stu2': 'Bob', 'stu1': 'Jack', 'stu3': 'Mary'}
#***************创建 *************************
info["stu4"] = "Kerry" #如果不存在,则是创建
print(info)
#{'stu2': 'Bob', 'stu1': 'Jack', 'stu3': 'Mary', 'stu4': 'Kerry'}
#**************删除 **************************
del info["stu1"] # 删除 del
print(info)
#{'stu2': 'Bob', 'stu3': 'Mary', 'stu4': 'Kerry'}
info.pop("stu2") #删除 pop(), 建议使用
print(info)
#{'stu3': 'Mary', 'stu4': 'Kerry'}
info.popitem() #删除 popitem(), 随机删除,不建议使用
print(info)
#{'stu3': 'Mary'}
多级字典嵌套及操作
#***************多级字典嵌套******************
Earth = {
"Asia":{
"China" : ["Beijign","Shanghai"],
"Japan" : ["Tokyo","Osaka"]
},
"Europe":{
"France" : ["Paris","Lyons"],
"England":"London"
},
"North America":{
"America":["Washington","New York"],
"Canada" :"Ottawa"
}
}
print(Earth["Asia"]["China"])
#['Beijign', 'Shanghai']
Earth["Asia"]["India"] = "New Delhi"
print(Earth["Asia"])
#{'China': ['Beijign', 'Shanghai'], 'India': 'New Delhi', 'Japan': ['Tokyo', 'Osaka']}
遍历字典
#***************************字典的循环***********************************
info = {
"stu1" : "Jack",
"stu2" : "Bob",
"stu3" : "Adam"
}
for i in info: #比下面循环高效,通过键值来查找
print(i,info[i])
# stu3 Adam
# stu1 Jack
# stu2 Bob for k,v in info.items():
print(k,v)
字典的其他用法
#******************* 字典其他用法***************************
info = {
"stu1" : "Jack",
"stu2" : "Bob",
"stu3" : "Adam"
}
b = {
"stu8" : "A",
"stu1" : "B"
}
#******************* values() *******************
print(list(info.values())) #以列表返回字典中的所有值
#['Adam', 'Jack', 'Bob'] #******************* keys() *******************
print(list(info.keys())) #以列表返回字典中的key
#['stu1', 'stu3', 'stu2'] #******************* setdefault() *******************
info.setdefault("stu4","Mary") #如果键不存在于字典中,将会添加键并将值设为默认值
print(info)
#{'stu3': 'Adam', 'stu2': 'Bob', 'stu4': 'Mary', 'stu1': 'Jack'}
info.setdefault("stu1","Kelly") #如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
print(info.setdefault("stu1","Kelly") )
#Jack
print(info)
{'stu3': 'Adam', 'stu2': 'Bob', 'stu4': 'Mary', 'stu1': 'Jack'} #******************* update() *************************
info.update(b) #把字典b中的信息更新到字典info中,区别setdefault
print(info) #相当于合并字典,info有的元素就更新,没有的元素就添加
#{'stu3': 'Adam', 'stu8': 'A', 'stu2': 'Bob', 'stu1': 'B'} #******************* items() ************************* 以列表返回可遍历的(键, 值) 元组数组
print(info.items()) #将字典转化为列表,可用list()序列化
#dict_items([('stu8', 'A'), ('stu1', 'B'), ('stu2', 'Bob'), ('stu3', 'Adam')]) #******************* fromkeys() *************************
c = dict.fromkeys([6,7,8],[1,{"name":"Jack"},123]) #创建一个新的字典,(键:值)
print(c)
#{8: [1, {'name': 'Jack'}, 123], 6: [1, {'name': 'Jack'}, 123], 7: [1, {'name': 'Jack'}, 123]}
c[7][1]["name"] = "Bob" #注意内存中数据的变化,参考深浅copy
print(c)
#{8: [1, {'name': 'Bob'}, 123], 6: [1, {'name': 'Bob'}, 123], 7: [1, {'name': 'Bob'}, 123]}
集合set
集合是一个无序不重复的序列。可以用来去重,把一个列表变成集合,就自动去重了。关系测试,测试两组数据之前的交集、差集、并集等关系。
l=[1,2,3,4,3,2,5]
print(l) # [1, 2, 3, 4, 3, 2, 5]
n = set(l)
print(n) # {1, 2, 3, 4, 5} #交集
l=set([1,2,3,4])
m=set([3,4,5,6])
print(l.intersection(m)) # {3, 4}
# 并集
print(l.union(m)) # {1, 2, 3, 4, 5, 6}
# 差集
print(l.difference(m)) # {1, 2}
# 子集
print(l.issubset(m)) # False
# 对称差集
print(l.symmetric_difference(m)) # {1, 2, 5, 6}
# 用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。。
print(l.isdisjoint(m)) # False
其他操作
s = set([3,5,9,10]) #创建一个数值集合
t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) t.add('x') # 添加一项 s.update([10,37,42]) # 在s中添加多项 使用remove()可以删除一项: t.remove('H') len(s)
set 的长度 x in s
测试 x 是否是 s 的成员 x not in s
测试 x 是否不是 s 的成员 s.issubset(t)
s <= t
测试是否 s 中的每一个元素都在 t 中 s.issuperset(t)
s >= t
测试是否 t 中的每一个元素都在 s 中 s.union(t)
s | t
返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t)
s & t
返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t)
s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t)
s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy()
返回 set “s”的一个浅复制
Python修炼之路-数据类型的更多相关文章
- python修炼之路——控制语句
Python编程之print python2.x和python3.x的print函数区别:python3.x的print函数需要加括号(),python2.x可以不加. #-*- coding:utf ...
- Python修炼之路-模块
模块 模块与包 模块:用来从逻辑上组织python代码(可以定义变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件. 例如,文件名:test.py,对应的模块名为:test 包 ...
- Python修炼之路-装饰器、生成器、迭代器
装饰器 本质:是函数,用来装饰其他函数,也就是为其他函数添加附加功能. 使用情景 1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式. 在这两种条件下,为函数添加附加 ...
- Python修炼之路-异常
异常处理 在程序出现bug时一般不会将错误信息直接显示给用户,而是可以自定义显示内容或处理. 常见异常 AttributeError # 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性 ...
- Python修炼之路-文件操作
Python编程之文件操作 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 每次文件打开.读取信息时,Python自动记录所达到的位置,好比一个书签,之后每一次 ...
- Python修炼之路-函数
Python编程之函数 程序的三种方式 面向对象:类------->class 面向过程:过程------>def 函数式编程:函数------>def 定义函数 函数:逻辑结构化与 ...
- python修炼之路---面向对象
面向对象编程 面向对象编程:使用类和对象实现一类功能. 类与对象 类:类就是一个模板,模板里可以包含多个函数,函数里实现一些功能. 对象:是根据模板创建的实例,通过实例对象可以执行类中的函数. 面向对 ...
- Python修炼之路-Socket
网络编程 socket套接字 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求. socket ...
- python精进之路1---基础数据类型
python精进之路1---基本数据类型 python的基本数据类型如上图,重点需要掌握字符串.列表和字典. 一.int.float类型 int主要是用于整数类型计算,float主要用于小数. int ...
随机推荐
- 递归选中easyui树
$(function(){ // var data1 = [ // { // "id": 3, // "text": "3组织", // & ...
- C#客户端填充外部IE浏览器中网页文本(input)且不提交
//引用COM组件//Microsoft HTML Object Library//Microsoft Internet Controls 记得改成x86 SHDocVw.ShellWindows ...
- 由于SID连接不匹配,监听器拒绝连接。
java.sql.SQLException: Listener refused the connection with the following error:ORA-12505, TNS:liste ...
- java:LeakFilling(面向对象)
1.类的修饰符只能是:public,默认的.另外:final ,abstract,(修饰符 (只有:public, 默认,)interface+类名 ). 2.在main函数中创建对象时,new哪个 ...
- eclipse sts 断点不起作用,把这行 勾上 就行
- python 并发编程 协程 gevent模块
一 gevent模块 gevent应用场景: 单线程下,多个任务,io密集型程序 安装 pip3 install gevent Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步 ...
- Linux上面执行 Windows 命令(比如 重启服务)的简单方法
1. 首先 基础是:openssh 还有 expect的包 2. 方法 安装openssh 转帖来自: https://www.jianshu.com/p/6e5bc39d386e 最近项目在搞Jen ...
- [转帖]Linux杂谈: 树形显示多级目录--tree
Linux杂谈: 树形显示多级目录--tree https://www.cnblogs.com/tp1226/p/8456539.html tree -L 最近写博客的时候偶尔会需要将文件目录结构直观 ...
- 引入父目录模块 import
a : a1.py a2.py b : b1.py 其中 a, b 同目录,现在想在b1中引用a1里面内容 在b1中需要进行进行如下操作 x = path.join('..') sys.path.ap ...
- Vue 子组件,向父组件传递。