小白学习之路,基础二

一,列表,元组操作

列表在我们以后的学习中会使用很多,能够对一些数据进行快速的存储,修改删除等操作。如果学过java的同学,你会发现python中的列表类似java中的数组。下面我们简单介绍一下列表。

1.首先学会定义列表:

names=["a","b","c","d","e"]

2.对列表里面的数据就行查找

列表是通过相应数据的下标来获取对应的数据

>>> names[0]

"a"

>>> names[2]

"c"

>>> names[-1]  #-1表示最后一个

"e"

>>> names[-2] #还可以倒着取

"d"

一定记得下标是从0开始的哦

列表还可以取一定范围的数据,我们称为切片。

names[1:3]      #查找第二个数据到第三个数据
names[-3:-1]    #查找倒数第三个到倒数第二个数据
name[-3:]       #查找倒数第三个到最后一个数据
name[:5]        #查找第一个到第五个数据
name[::2]       #查找第一个到最后一个,但是要间隔一个元素取一个

一定要记得切片是顾头不顾尾,只能取到前面的数据,后面那个取不到!!!

3.对列表的数据进行添加

对列表的添加有两种方式,一种是在指定位置加入相应数据,还有就是在列表最后面追加数据

1 names.insert(3,"4")      #在第四个位置增加数据4
2 names.append("end")       #在最后的一个位置添加数据end

4.对列表进行修改,删除

1 names[0]="first"       #存在的数据赋值就是修改
2 
3 names.remove("a")      # 删除指定数据
4 del names[0]           # 删除指定位置数据
5 names.pop()            # 删除最后一个数据

5.列表的其他操作

1 names.index("a")    #查找数据所在的位置
2 names.count("a")    #统计a的个数
3 names.sort()           #排序输出,一定记得python3x中不支持不同类型排序
4 names.reverse()      #反转
5 #复制
6 names2=names.copy() #浅复制,只能复制第一层的东西,后面是跟复制的变化而变化
7 
8 import copy
9 names2 =copy.deepcopy(names) #深度复制,不管names2怎么变化都是复制最初的数

遍历出所有列表中的数据:

for i in names:
    print(i)     #遍历出列表中的所有数据

遍历出列表中的数据和序号

1 for index,i in enumerate(names):
2     print(index,i)

6.元组

元组其实跟列表差不多的,不过它不能被修改,所有又叫只读列表

定义方法:

names=("a","b","c")

二,字符串相关操作

字符串的相关操作太多了,我这里就列举一些比较常用的。

 1 name="zzq"
 2 name.capitalize()     #首字母大写
 3 name.count("z")     #统计z的个数
 4 name.center(20,"-")   #打印20个字符,不够两边加-
 5 name.encode()        #转化为二进制
 6 name.encode().decode()   #二进制转化为字符编码
 7 name.endswith("q")    #判断是否q结尾
 8 name.expandtabs(tabsize=2)    #tab转化为多少空格
 9 name.find("q")      #找到q所在的位置索引,从最左开始
10 name.rfind("q")    #找到q所在的位置索引,从最右边开始
11 name.isalpha()    #判断是否全部为字母
12 name.isidentifier()    #判断是不是合法的标识符
13 name.istitle()      #判断首字母是否大写
14 name.upper()    #全部变为大写
15 name.lower()        #全部变为小写
16 "zhu zhi qiang".split("z")  #按照z把前面的字符串分成列表
17 '+'.join(['1','2'])    #把列表转化为字符串,中间添加+(可以自己随便定义)
18 .strip()     #去掉空格跟换行符
View Code

三,字典操作

字典一种key - value 的数据类型,类似与其他语言中的键值对。在后续的学习中会大量的使用到。字典跟列表一样是无序的。

定义字典语法:

1 name={
2     1:"zzq",
3     2:"gmx",
4     3:"aaa"
5 }

字典的增加和修改

1 name[1]="zzq43"    #替换
2 name[4]="add"      #添加

字典的删除和查找

1 del name[4]   #删除
2 name.pop(3)    #删除
3 print(name[1])  #查找
4 print(name.get(1))  #标准查找,不存在不会报错

字典可以嵌套使用,不仅仅是字典嵌套字典,还可以嵌套列表等共同使用,已达到更多的功能。

遍历字典的两种方法

1 for i in name:
2     print(i,name[i])
3 for k,v in name.items():   #变成列表以后遍历出所有的数据
4     print(k,v)
View Code

自己总结的字符串列表还有字典之间的转化关系图,图比较丑emmm,所以就将就看。

四,集合

集合也是无序的,不重复的数据集合。集合的主要作用有两个:

1.去重:把一个列表变成集合,就自动去重了

2.关系测试:测试两组数据之前的交集、差集、并集等关系

定义集合

1 #两种方法
2 name=[1,2,2,5,4,4]
3 new=set(name)
4 
5 new2=set([1,2,2,5,4,4])

集合的常见操作

 1 set1=set([1,2,2,3])
 2 set2=set([2,3,4,5])
 3 set1.intersection(set2) #两个集合的交集
 4 set1.union(set2) #并集
 5 set1.difference(set2) #差集,第一个有但是第二个没有
 6 set1.issubset(set2)  #判断set2是不是set1的子集
 7 set1.issuperset(set2) #判断是不是父集
 8 set1.symmetric_difference(set2) #对称集,输出两个集合不同的数据
 9 #其他表达方式
10 set1 & set2 #表示两个集合的并集
11 set1 | set2 #表示两个集合的交集
12 set1 - set2 #表示两个集合的差集
13 set1 ^ set2 #表示两个集合的对称差集
View Code

集合的增删改操作

1 set1.add('11') #添加一个数据
2 set1.update([33,44,7]) #添加一组数据
3 set1.remove('11')  #删除数据,如果没有就会报错
4 set1.discard(3)    #删除数据,如果没有不会报错
5 set1.pop()  #随机删除一个数据
View Code

五,文件的相关操作

文件的操作大概有打开文件,然后对文件的修改,读取,删除,写入等操作,最后执行完成关闭文件。这就是文件的基本操作流程。

1.首先先认识一下打开文件的模式有哪些:

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

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

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

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

  • rU
  • r+U

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

  • rb
  • wb
  • ab

文件的基本操作

 1 #只读文件操作
 2 f=open('test','r',encoding='utf-8')#打开文件test,只读
 3 data=f.readline()  #打开文件的第一行数据
 4 all_data=f.read()  #读取剩下的所有文件内容
 5 f.close() #关闭文件
 6 #写入文件操作(文件里面有内容自动删除,然后添加新内容)
 7 f=open('test','w',encoding='utf-8')#打开文件test,只写
 8 f.write('hello world\n')#在文件中写入数据
 9 f.close()
10 #写入文件操作(文件里面有内容,就在原来的后面追加添加的内容)
11 f=open('test','a',encoding='utf-8')#打开文件test,只写
12 f.write('hello world\n')#在文件中写入数据,如果文件有数据在文件后面追加
13 f.close()
14 #如果在前面的基础上加上一个+表示可读可写,其他功能一样
View Code

对二进制文件的操作

1 #用法跟前面的r,w,a相同,只是处理二进制文件
2 f=open('test','ab')
3 f.write(b'I Love You') #在写入的时候一定记得要是字节
4 f.write("我爱你".encode())
5 f.close()
View Code

文件的一些基本功能操作

1 f.tell()  #显示光标的位置,字节形式
2 f.seek(0)  #把光标位置变为0,可以实现重读功能
3 f.flush()   #时刻刷新
4 f.truncate(50) #从开始位置一直截止到50个字符的位置,只有在a的情况下才行
View Code

其他文件有用的操作

1 #因为在打开文件以后很多人忘记忘掉文件,所以还有下面这种方法
2 with open('test','r') as f:
3     print(f.read())
4 #打开多个文件
5 with open('test','r') as f,\
6     open('test2','r') as f2:
7     pass

六,字符编码转化

学习这个之前,先跟大家普及一下简单的知识。或者可以参考我的另外一篇博客,嘻嘻嘻,强势一个波广告。https://www.cnblogs.com/zzqit/p/9169264.html

8位(bit)=1字节(byte)

ASCII码中英文占一个字节,没有中文,只有英文和特殊字符

万国码,Unicode,英文和中文都占两个字节

Utf-8 (可变长字符编码) 英文占1个字节,中文占三个字节

编码之间的相互转换,详细文章http://www.cnblogs.com/yuanchenqi/articles/5956943.html

详细代码介绍:

1 #默认的是utf-8,如果你在解码不写的时候默认就是解码成uft-8
2 s="我爱你"
3 s_gbk=s.encode('gbk') #把Unicode转化为gbk
4 gbk_utf8=s_gbk.decode('gbk').encode('utf-8')#把gbk转化为unicode,然后变成utf-8

生活,在于选择。把自己摆在一个合适的位置,选择适合自己的生活与生存的方式,即使不是大红大紫、大富大贵,只要心是快乐的,那就是最好的。每个人都有自己的轨道,每个人也都在自己的轨道上面不停的前进。我希望每个人都能在自己选择的路上做好自己,不要在意别人的眼光,开心就好。

猜你喜欢

转载自www.cnblogs.com/zzqit/p/9170456.html