1 列表、元组操作

列表可以对数据实现最方便的存储、修改等操作

 names = ['Jack', 'Leon','Eric']

通过下表访问列表中的元素,下标从0开始计数

 names = ['Jack','Leon','Eric']
 a = names[0]
 b = names[1]
 c = names[-1]
 d = names[-2]
 print(a, b, c, d)

切片:取多个元素

 names = ['Alex','Leon','Eric',"Rain","Tom","Amy"]
 a = names[1: 4]#取下标1至下标4之间的数字,包括1,不包括4

 b = names[1: -1]#取下标1至-1的值,不包括-1

 c = names[0: 3]
 d = names[ :3]#如果是从头开始取,0可以忽略,跟上句一样

 e = names[3: ]#如果想取最后一个,必须不能写-1,

 f = names[3: -1]#这样-1就不会包含

 g = names[0::2]#后面的2代表,每隔一个元素,取一个
 h = names[::2]#和上句效果一样

 print(a, b, c, d, e, f, g, h)

追加——append方法

 names.append("我是新来的")
 print(names)

插入——insert方法

 names.insert(2,"插入1")

修改——索引赋值

 names[2] = "换人了"

删除——del函数、remove方法、pop方法

 del names[2]#删除指定位置元素
 names.remove("Eric")#删除指定元素
 names.pop()#删除最后一个元素

扩展——extend方法

 b = [1, 2, 3]
 names.extend(b)
 print(names)

拷贝——copy方法

 name_copy = names.copy()
 print(name_copy)

统计——count方法

 count1 = names.count("Leon")
 print(count1)

排序、反转——sort方法、reverse方法

 names.sort()
 print(names)
 names.reverse()
 print(names)

获取下标——index方法

 index1 = names.index("Leon")
 print(index1)

元组(只读列表)

 names2 = ("aaa", "bbb", "ccc")

元组只有count、index两个方法

2 字符串操作

特性:不可修改

首字母大写

 name = "leon nie"
 print(name.capitalize())

大写全部变小写

 print(name.casefold())

center方法

 print(name.center(50,"-"))#结果
 ---------------------leon nie---------------------

统计次数

 print(name.count("e"))

将字符串编码成byte3格式

 print(name.encode())
 #输出
 b'leon nie'

判断是否以XX结尾

 print(name.endswith("n"))

format方法

 msg = "my name is {}, and age is {}"
 print(msg.format("leon", 22))

 msg = "my name is {0}, and age is {1}"
 print(msg.format("leon", 22))

 msg = "my name is {name}, and age is {age}"
 print(msg.format(age = 22, name = "lmsg = "my name is {name}, and age is {age}"
print(msg.format_map({"name":"alex","age":22
 #按顺序写入
 msg = "my name is {}, and age is {}"
 print(msg.format("leon", 22))

 #指定顺序写入
 msg = "my name is {0}, and age is {1}"
 print(msg.format("leon", 22))

 #指定元素写入
 msg = "my name is {name}, and age is {age}"
 print(msg.format(age = 22, name = "leon"))

 #字典写入
 msg = "my name is {name}, and age is {age}"
 print(msg.format_map({"name":"alex","age":22}))

返回元素所在的索引

 print(msg.index("age"))

是否为纯数字和字母

 print('9aA'.isalnum())

是否整数

 '.isdigit())

join方法

 print("|".join(["aaa","bbb","ccc"]))#连接列表

两个字符串对应转换,可以用于密码?——maketrans方法

 intab = "aeiou"
 outtab = "
 str = "this is string example...wow!!!"

 trantab = str.maketrans(intab, outtab)

 print(str.translate(trantab))

替换函数——replace

 print("alex li, chinese name is lijie".replace("li","LI",1))

大小写互换——swaplace

 print("aleX li".swapcase())

用0填充指定长度——zfill

 msg = "leon"
 print(msg.zfill((40)))

左填充、右填充——ljust、rjust

 print(msg.ljust(40,"-"))
 print(msg.rjust(40,"+"))

检查是否可以作为标识符,即是否符合变量命名规则

 print(msg.isidentifier())

3 字典操作

key-value数据类型

语法:

 info = {
     'stu1101':'aaa',
     'stu1102':'bbb',
     'stu1103':'ccc',
 }

字典的特性:

  • dict是无序的
  • key必须是唯一的

增加

 info["stu1104"] = "ddd"
 print(info)

修改

 info["stu1101"] = "XXX"

删除

 info.pop("stu1101")
 del info['stu1103']
 info.popitem()#随机删除

查找

 #判断是否在字典中
 print("stu1102" in info)

 #获取,如果没有该key返回None
 print(info.get("stu1102"))

 #获取,如果key不存在,报错
 info["stu1105"]

setdefault和update

a = info.values()
b = info.keys()
c = info.setdefault("stu1106","Alex")#setdefault方法,key-value存在,更新value。不存在,添加。

x = {1:2, 3:4, "stu1102":"HAHA"}
info.update(x)#update方法对有key的value进行更新,没有的添加

items

 print(info.items())
 #返回字典中的所有key-value对

循环dict

 for key in info:
     print(key,info[key])

4 集合操作

集合是一个无序的,不重复的数据组合,主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
 s = set([3, 5, 9, 10])
 t = set("Hello")

 a = t | s #并集
 b = t & s #交集
 b = s.intersection(t)#st的交集

 c = t - s #差集,在t中,不在s中
 c = t.difference(s)#

 d = t ^ s #对称差集(项在t或s中,但不会同时出现在二者中)

 t.add('x')  #在t中添加一项
 s.update([10, 37, 42])#在s中添加多项

 t.remove('H')#删除一项

 len_s = len(s)#set的长度

 print('x' in s)#判断x是否是s的成员
 print('x' not in s)#判断x是否不是s的成员
 print(s.issubset(t))#判断s是否是t的子集
 print(t.issuperset(s))#判断t是否是s的父集
 print(s.union(t))#返回包含s、t每一个元素的set,并集

5 文件操作

文件操作流程

  • 1 打开文件,得到文件句柄并赋值给一个变量
  • 2 通过句柄对文件进行操作
  • 3 关闭文件.

基本操作

f = open('lyrichaha',encoding='UTF-8')#要指定解码方式UTF-8,不然无法打开
first_line = f.readline()#读一行
print('first line: ', first_line)
print('我是分割线'.center(50,'-'))
data = f.read()#读取剩下的所有内容,文件大时不要用
print(data)
f.close()

打开文件的模式:

  • r,只读模式(默认);
  • w,只写模式。(不可读,不存在则创建,存在则删除内容);
  • a,追加模式。(可读,不存在则创建,存在则只追加内容)。

“+”表示可以同时读写某个文件

  • r+,可读写文件。(可读,可写,可追加)
  • w+,写读
  • a+,同a

“U”表示在读取时,可以将\r \n \r\n自动转换成 \n(与r或r+模式同使用)

  • rU
  • r+U

“b”表示处理二进制文件(如:FTP发送上传ISO镜像文件,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

 with open('log', 'r') as f:

     ...

如此方式,当with代码块执行完毕时,内部自动关闭并释放文件资源。

Python2.7之后,with又支持同时对多个文件的上下文进行管理,即:

 with open('log1') as obj1, open('log2') as obj2:
     pass

6 字符编码与转码

2nd,Python基础2——02的更多相关文章

  1. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  2. Python基础教程-02

    <Python基础教程> 第3章 使用字符串 字符串方法find返回的并非布尔值.如果find像这样返回0,就意味着它在索引0处找到 了指定的子串 join可合并一个字符串列表,不能合并数 ...

  3. python 基础干货 02

    list 与 tuple list 类似 数组 tuple 跟 list 一样, 只是一旦定义, 里边的内容不可以改变. 这样, 上边的内容就不可以改变了. "可变的" tuple ...

  4. python基础训练营02

    任务二 时长:2天 1. 列表 a. 标志 b. 基本操作(创建,append( ),pop( ) ,del( ), 拷贝) c. 列表相关方法 2. 元组 a. 标志 b. 基本操作(创建及不可变性 ...

  5. python基础知识0-2

    # !/usr/bin/env python # 提示输入用户名和密码 # 验证用户名和密码#     如果错误,则输出用户名或密码错误#     如果成功,则输出 欢迎,XXX! import ge ...

  6. Python基础:02数字

    1:Python标准整数类型等价于C的(有符号)长整型.整数一般以十进制表示,但是Python也支持八进制或十六进制来表示整数.八进制整数以数字“0”开始, 十六进制整数则以“0x”或“0X”开始. ...

  7. Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程

    [保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...

  8. python基础——类和实例

    python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...

  9. python基础——使用模块

    python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...

随机推荐

  1. Linux基础命令---ifconfig

    ifconfig ifconfig指令用来配置网络接口参数,同时还可以显示当前内核网络接口的工作状态.如果没有提供参数,则ifconfig将显示当前活动接口的状态.如果给定单个接口参数,则只显示给定接 ...

  2. web前端利用leaflet生成粒子风场,类似windy

    wind.js如下: $(function() { var dixing = L.tileLayer.chinaProvider('Google.Satellite.Map', { maxZoom: ...

  3. websocket 原理

    自己写一个websocket import socket, hashlib, base64 sock = socket.socket() sock.bind(('127.0.0.1', 9000)) ...

  4. vue组件通信之任意级组件之间的通信

    <div id="app"> <comp1></comp1> <comp2></comp2> </div> ...

  5. JustOj 2040: 王胖子买零食 (贪心)

    题目描述 大豪哥有个好朋友叫王胖子,众所周知王胖子特别爱吃零食,比如各种不一样的糖果,辣条呀,可是王胖子每个月用在买零食上的钱不是固定的,但是因为王胖子特别爱吃零食,他希望把自己能花在买吃的钱全部用掉 ...

  6. Icarscan VCI is definitely the update variation of Start iDiag

    Start iCarScan is alternative of Super X431 iDiag, it’ll make your Android smartphone or tablet righ ...

  7. java课上测试心得

    放暑假之前,建民老师就给我们布置了每一天学习两小时的代码,但是自己的不重视,根本就没有达到这个要求,简单学了一点点基本的东西,然后在开学的第一堂课上,连续三个小时的敲代码,让我意识到了自己的问题,一个 ...

  8. webpack 创建vue项目过程中遇到的问题和解决方法

    目录 1 webpack简介 2 webpack实现多个输入输出多个html 3  webpack 中的module下rules 下的use和loader选项 4 webpack 文件更新,如何使页面 ...

  9. AirTest源码分析之运行器

    from: https://blog.csdn.net/u012897401/article/details/82900562 使用:根据airtest文档说明,可以通过命令行来启动air脚本,需要传 ...

  10. Golang数组注意细节

    数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化. var arr[]int,这个arr就是slice切片. 数组中的元素可以是任何数据类型,包括值类型和引用类型, ...