一、变量及条件判断
1.字符串、布尔类型、float、int类型,None都是不可变变量
2.字符串是不可变变量,不可变变量就是指定义之后不能修改它的值
3.count +=1和count=count+1是一样的
count-=1 count*=1 count/=1
内容补充:
None是空,代表什么都没有,但是它不是空字符串
if 条件判断的
or 与 a or b a、b 只要一个为True条件就为真
and 且 a and b a、b都为真,条件才为真
in 在不在它里面
is 判断的是内存地址是否一样
not 取反

说明:
1.!/usr/bin/python #python里面有个这个话,代表在linux下运行的时候去哪个目录下找python的解释器,在windows上运行不用写

2.指定字符集
coding:utf-8
__*__ coding:utf-8 __*__#这两种都在python2里面为了防止中文报错,修改字符集用的,python3里面不用写

二、字符串操作
1.字符串的字义
str = 'hello Imooc '

2.字符串访问
print str[1] #通过下标取值
字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下票来修改它的值
注意:str[1]='E' #这种赋值方式是错的,字符串是不可变变量

3.for循环取字符串中的元素
for s in str:#python里面的for循环,每次循环的时候,循环的是循环对象里面的每一个元素
print(i) #输出str里面的每个元素
len(str)#取变量的长度

4.字符串的内置函数
str = 'hello Imooc '
import string
print(string.ascii_letters + string.digits) #大小写字母+数字
print(string.ascii_lowercase)#所有的小写字母
print('string.ascii_uppercase') #所有的大写字母
print('string.digits')#所有的数字

print(str.capatalize)#首字母大写,其它小写----->Hello imooc
print(str.center(30,''))#30个,把str放中间,str长度不够用*来补
print(str.endswith('c')) #是否以u结尾
print(str.expandtabs(30)) #补\t的次数
print(str.find('o'))#查找字符串的索引,找到的话返回第一次出现的索引,找不到返回-1
name = 'my \t name is {name},age is {age}.'
print(name.format(name='hhf',age=28))#格式字符串
print(name.format_map({'name':'hhf','age':19}))#这个也是格式化字符串,后面跟的是一个字典

print('abc111'.isalnum())#是否包含数字和字母
print('abA'.isalpha())#是否是英文字母
print('122'.isdigit())#是否是数字
print('aa'.isidentifier())#是否是一个合法的变量名
print('aa'.islower())#是否是小写字母
print('AA'.isupper())#是否是大写字母
print('Loadrunner Book'.istitle())#是不是一个标题,判断首字母是否大写
print('+'.join(['hehe','haha','ee']))#拼接字符串
print(name.lower())#变成小写
print(name.upper())#变成大写

print('\nmysql \n'.lstrip())#默认去掉左边的空格和换行
print('\nmysql \n'.rstrip())#默认去掉右边的空格和换行
print('\nmysql \n'.strip())#默认去掉两边边的空格和换行
print('mysqlm '.strip('m'))#当传入某个字符串的话,它只会去掉指定的字符

p = str.maketrans('abcdefg','1234567')#前面的字符串和后面的字符串做映射
print('cc ae gg'.translate(p))#输出按照上面maketrans做映射后的字符串

下面是反解
new_p = str.maketrans('1234567','abcdefg')
print('cc ae gg'.translate(new_p))
print('mysql is db.'.replace('mysql','oracle',1))#替换字符串

print('mysql is is db'.rfind('is'))#返回最右边字符的下标
name1 = 'zcl p y zyz'
print(name1.split())#切割字符串,返回一个list,按照你指定的字符串去分隔这个字符串,然后放到一个list里面 #如果你什么都不写的话,按照空格分割,多个空格也算一个

print('1+2+3+4'.split('+'))#切割字符串,返回一个list
print('1+2+3\n1+2+3+4'.splitlines())#按照换行符分割
print('Abcdef'.swapcase())#大小写反转

注意:所有字符串的方法,它都不会修改原来字符串的值,都会产生一个新的字符串

5.字符串的切片
str = 'hello Imooc '
print(str[0:2]) #从第几个取到第几个,这个也是顾头不顾尾
s=[::-1]#如果步长为-1的时候,还有反转的功能
s=[:4]#如果是从第一个开始取,取到某一个下标结束,那么最前面是可以不写的
s=[1:]如果是从前面某个开始取,取到最后面结束,那么最后面是可以不写的

三、列表
1.列表的定义
a =['imooc',1,2,'zhangsan']

2.列表元素的访问
print a[1] #同字符串一样,列表是可以通过下标来访问的

3.修改列表的元素值
a[1]='aaa' #第2个元素修改为aaa ,修改的元素必须存在,否则会报错 #列表是可变变量,它是可以通下标修改值的
a[4]='bbb'#会报错

4.列表添加元素
a.append('lily') #给list从最末尾添加值
a.insert(1,'hhf')#指定位置添加元素

3.列表删除元素
print('pop返回值:',a.pop())#默认删除最后一个元素,删谁也把它的值返回了
a.pop(2) #删除指定位置的元素
a.remove('hhf')#删除指定的值,和pop的区别:pop删除元素,传的是下标,remove传的是一个元素的值
del a[0] #使用del关键字删除指定元素
del a #删除变量a,此时如果print a 就会报错
a.clear() #清空列表元素,此时list为空

4.列表内置方法
print(a.count('aa'))#查找值在list里面的次数
print(a.index('hhf')) #返回查找元素的下标,如果有多个话返回第一个的,如果没有的话,就会报错
print(a.index('hhf',2,3)) #后观可以加上查找开始位置和结束位置
stus = ['ccc‘,'ddd','fff']

print('加起来的',stus+a)#两个列表合并
print('这个是extend:',stus.extend(a))#把另一个列表里面的每个值挨个添加到前面的列表中

nums = [23,34,21,2,456,35,12324324]
nums.sort()#排序,默认是升序
print(nums.sort(reverse=True))#排序,指定reverse=True就是降序
nums.reverse()#反转数组,会改变原数组的值
print('hhf' in a)#用in来判断一个元素是否在list里面
print(a[-3])#下标是-1的话,代表最后一个元素

5.多维数组、列表、list
lis = [1,'lily',19.8,['lily','lilei',['heheh','haha']]]
取’haha的值‘,可以通过下面的方法取到
print(lis[3][2][1])

6.列表循环
a =['imooc',1,2,'zhangsan']
for name in a:#可以通过循环列表来获取,列表的元素值
print(name)

7.切片操作:
name1 = 'zcl,pyzyz'
names = ['zcl','py','zyz']#切片的意思就是从list里面或者字符串里面取几个元素 #切片操作对字符串也是完全适用的

print(names[0:2])#从第几个取到第几个,这个也是顾头不顾尾

print(names[:2])#如果是从第一个开始取,取到某一个下标结束,那么最前面是可以不写的

print(names[1:])#如果是从前面某个开始取,取到最后面结束,那么最后面是可以不写的

print(names[:])#如果最前面和最后面都不写的话,取整个列表

nums = list(range(1,11))
print(nums[1:10:2]) #如果最后面写上步长的话,就是每隔几个取一次
nums.reverse()#反转数组,会改变原来的数组
print(nums)
print(nums[::2])
print(nums[::-2])
print(nums[::-1])#当切片的步长为负数时,是从末尾开始取值的,然后隔几个取一次,如果步长为-1的时候,还有反转的功能

四、元组
1.元组的定义
tp = (1,2,3,4,5,6,1,1,1)
a='hello world' #这个是定义字符串
b=('hello world',) #这个是定义元组
print('this is',type(b)) #查看变量b的类型

2.元素值的访问
print(tp[0])

3.元组可用的方法
print(tp.count(1))
print(tp.index(1))#元组是一个不可变的list,只有count方法和index方法

注意:定义元组的时候,如果元组只有一个元素,那么你要在这个元素后面加一个逗号,要不然就是一个字符串

4.#强制类型转换函数
lis=['13','235']
new_lis = tuple(lis)#强制转换为元组
print(type(new_lis))#查看变量new_lis的变量类型
int()
float()
str()
list()
tuple()

五、字典
1.定义一个字典
info = {
'name':'xiaoming',
'sex':'nan',
'age':20,
'id':1,
}#字典里面的key是不能重复的

2.取字典中的值
print(info['id']) #通过key取值
print(info.get('id'))#通过key取值
--用中括号取值和get方法取值的区别 ,get方法获取不到key的时候不会报错,中括号取值找不到key会报错
--get方法还可以多传一个参数,如果get不到key的话,那么返回xx
--如果不写的话,默认get不到返回None
info['addr'] = 'Beijing'

3.给字典新增一个值
info.setdefault('phone',13811111) #给字典新增一个值
info['id'] = 7
--在有这个key的情况下那就是修改这个key的value
--没有这个key的话,就是新增

4.删除元素
说明:字典是无序的
del info['addr'] #通过del关键字删除字典的一个元素
info.pop('name')#pop删除的时候必须得指定key,pop方法会返回删除的key对应的value pop方法删除元素有返回值
info.popitem()#随机删除一个元素
info.clear()#清空字典

查看下列元素的访问
all = {
'car':
{
'color':['red','yellow','black'],
'moeny':1111111,
'pailiang':"2.5L",
'name':"BMW"
} ,
'car1':
{
'color':['red','yellow','black'],
'moeny':1111111,
'pailiang':"2.5L",
'country':"china"
},
'car2':
{
'color':['red','yellow','black'],
'moeny':1111111,
'pailiang':"2.5L"
}

}
(1)将car中的color改为orange
all.get('car').get('color')[1] = 'orange'
all['car']['color'][1]='orange'
print(all)

5.字典的内置方法
names= {'a1':'anan','a2':'lily','a3':'leilei'}
print(names.keys())#获取该字典的所有key
print(names.values())#获取该字典所有的value
print(names.items())#获取字典的key和value,循环的时候用
print(names.setdefault('a1','fengluo'))#如果这个key存在的话,那就不动它,不存在的话,添加一个
name2 = {'a1':'sriba','stu10':'baidu'}
names.update(name2)#更新字典值,如果key存在的话,就更新值,不存在的话就添加
print(names.items())#字典转换成一个list

6.字典的循环
--直接循环字典循环的是字典的key,如果想循环的时候同时获取到key和value,那么就要用.items方法
info2 = {
'name':"hhh",
'sex':'nan'
}
info.update(info2)#把两个字典合并到一起,如果有一样的key,那么更新value
print(info)

print(info2.items())

for k,v in info.items():#items方法的作用就是为了让你循环的时候同时把key和value取到
print('%s is %s'%(k,v))

for k in info2:
print(k,info2[k])
--第二种方式效率比较高

info.has_key('name')
说明:
python2里面有这个方法,是判断key是不是存在的
python3里面没有 print('name' in info2)
python3里面直接用in来判断key是否存在

六、文件操作
1.文件的读写步骤:
(1)先打开文件
(2)读取/写入内容
(3)保存文件

2.打开文件
文件的打开模式有3种:
(1)w写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
w+模式,写读模式,只要沾上w,肯定会清空原来的文件
(2)r读模式,只能读,不能写,而且文件必须存在
r+是读写模式,只要沾上r,文件必须得存在
(3)a追加模式,也是只能写,在文件的末尾添加内容
a+追加读写模式,文件存在只追加内容,不存在则创建
注意:使用a模式的时候,应该注意文件指针的位置
(4)rb+、wb+、ab+,这种是二进制模式打开或者读取,一些音乐文件、图片等等

fw = file('a.txt','r')
--如果在打开文件的时候,不指定模式,那就是读模式
--在python2里面也可以用file这个函数去操作文件,但是在Python3里面只能用open

f= open('C:\Users\Desktop\jmeter_script\aaa.txt','r')
f= open('C:/Users/Desktop/jmeter_script/aaa.txt','r')
--打开某个目录下的文件

f = open('a.txt','a+',encoding='utf-8') #f代表的是这个文件的对象,也叫句柄
--encoding参数可以指定文件的编码

3.读文件
print(f.read())#读文件内容,返回的是一个字符串
print(f.readline())#只读文件一行的内容
print(f.readlines())#读文件的内容,返回的是一个列表
注意:
f.read()#读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆

4.文件的循环
文件对象也是可迭代的,直接循环文件的话,循环的是文件每一行的内容
f= open(aaa.txt','r')
for name in f:
print(name)
f.close()

5.写文件
f.write('zhangsan') #写文件的时候,只能是字符串
f.writelines(['123','456'])#可以把列表写到里面

6.文件指针
f.tell()#获取当前文件的指针指向
f.seek(0) #把当前文件指针指向哪

7..文件关闭
f.close()#关闭文件

8.文件操作的其它方法
f.readable()#判断文件是否可读
f.writeable()#判断文件是否可写
f.flush()#写入文件后,立即从内存中据数据写到磁盘中
f.truncate()#清空文件内容
例如:
--flush用法
import time
fw = open('python.txt','w',encoding='utf-8')
fw.write('下周不上课!')
fw.flush()#写完之后立马生效
exit('拜拜')
time.sleep(30)
fw.close()

9.文件修改
修改文件的话,有两种方式:
一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;
第二种是把修改后的文件内容写到一个新的文件中
第一种
with open('file.txt','r+') as fr:
res = fr.read()
fr.seek(0)
fr.truncate()#清空文件内容
new_res = res.replace('nibuhao','my')
fr.write(new_res)

没有用with方法
f = open('file.txt','r+')
res = f.read()
f.seek(0)
f.truncate() # 清空文件内容
new_res = res.replace('me', 'nibuhao')
f.write(new_res)
f.close()

第二种
import
with open('file.txt') as fr,open('file_new','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_new文件
for line in fr:#循环file.txt中的每一行
new_line = line.replace('我','me')
fw.write(new_line)#写到file_new文件中
os.remove('file.txt')#删除文件
os.rename('file_new','file.txt')#文件重命名

没有用with的方法
import os
f = open('a.txt','a+',encoding='utf-8')
f.seek(0)#移动文件指针
fw = open('a.txt.new','w',encoding='utf-8')
for line in f:
new_res = line.replace('学','不学')
fw.write(new_res)
f.close()
fw.close()
os.remove('a.txt')#删除文件
os.rename('a.txt.new','a.txt')#文件重命名

6.大文件时,读取文件高效的方法:
大文件时,读取文件高效的操作方法:
用read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了
f=open('aa.txt')
for line in f:
print(line)#line是每行文件的内容,读完一行的话,就会释放一行的内存

with使用:
在操作文件的时候,经常忘记了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方法如下:
with open('aa.txt','r') as f:#打开一个文件,把这个文件的句柄给f
for line in f:
print(line)

with open('aa1.txt') as f1,open('aa2.txt','w') as f2:#这个是多文件的操作,打开两个文件,f1是读aa1.txt,f2是新建一个aa2.txt文件
for line in f1:#循环aa1.txt中的每一行
f2.write(line) #写到aa2.txt文件中

python基础--字符串操作、列表、元组、文件操作的更多相关文章

  1. python 基础篇 04(列表 元组 常规操作)

    本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...

  2. Python基础之字符编码,文件操作流与函数

    一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...

  3. Python处理字符串和列表元组的小技巧

    变量值互换 a = 1 b = 100 # 变量值互换 a, b = b, a print('a:', a) print('b:', b) 输出结果: a: 100 b: 1 多个变量赋值 a, b, ...

  4. python基础数据类型之列表,元组操作

    一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...

  5. python基础(内置函数+文件操作+lambda)

    一.内置函数 注:查看详细猛击这里 常用内置函数代码说明: # abs绝对值 # i = abs(-123) # print(i) #返回123,绝对值 # #all,循环参数,如果每个元素为真,那么 ...

  6. python基础(六)dict字典和文件操作open

    字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...

  7. Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作

    本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...

  8. python基础之 编码进阶,文件操作和深浅copy

    1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码.即先将其他编码的字符串解码(decode)成unicode,再从unic ...

  9. python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数

    目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...

  10. Python基础【day03】:文件操作(六)

    一.概述 我们工作中需要经常操作文件,下面就讲讲如何用Python操作文件 1.文件操作的流程: 打开文件,得到文件句柄赋值给一个变量 通过文件句柄,对文件进行操作 关闭文件 二.入门 1.语法 op ...

随机推荐

  1. DIY.NETORM框架——总体分析

    一.故事 近些年一直开发MIS系统,用过PB,VB,C#  .如今学了半年的java,早先听人说,.NET和 java一直就是互相借鉴.一起升级.都是为了让程序开发趋于简单,高校,而这不可避免就肯定用 ...

  2. FZU 2168 防守阵地 I(公式推导)(经典)(中等)

    Problem 2168 防守阵地 I Accept: 377    Submit: 1280 Time Limit: 3000 mSec    Memory Limit : 32768 KB  Pr ...

  3. android高速开发框架xUtils

    xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词).拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...

  4. struts2 一个CRUD的BaseAction

    在struts2 in action中所见,这样封装后省去了大部分crud反复代码.尽管还不能理悟.先记下来. abstract class BaseAction extends ActionSupp ...

  5. 【树剖求LCA】树剖知识点

    不太优美但是有注释的版本: #include<cstdio> #include<iostream> using namespace std; struct edge{ int ...

  6. 移植linux3.7到nuc900系列开发板遇到的问题

    通过移植学习linux新版本内核,大概了解一下内核变化. 记录一下移植过程中遇到的问题或值得注意的地方. 1,添加一款arm9芯片的支持 首先修改\arch\arm\tools\mach-types文 ...

  7. 重装mysql

    重装mysql方法. 转自http://blog.sina.com.cn/s/blog_73000beb01012eh4.html 1.删除 mysql 1.1 sudo apt-get autore ...

  8. [HNOI2006]潘多拉的宝盒

    https://www.zybuluo.com/ysner/note/1250303 题面 给定\(s\)个自动机,如果某个自动机\(A\)能产生的所有串都能在自动机\(B\)中产生(即走相同\(0/ ...

  9. JZOJ 1667 ( bzoj 1801 ) [ AHOI 2009 ] 中国象棋 —— DP

    题目:https://jzoj.net/senior/#main/show/1667 首先,一行.一列最多只有 2 个炮: 所以记录一下之前有多少行有 0/1/2 个炮,转移即可: 注意取模!小心在某 ...

  10. struts2里result类型Stream的参数配置

    转自:https://blog.csdn.net/q714699280/article/details/51756126 contentType 内容类型,和互联网MIME标准中的规定类型一致,例如t ...