zoukankan      html  css  js  c++  java
  • 小白学习之路,基础二

    一,列表,元组操作

    列表在我们以后的学习中会使用很多,能够对一些数据进行快速的存储,修改删除等操作。如果学过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 或 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
    ')#在文件中写入数据
     9 f.close()
    10 #写入文件操作(文件里面有内容,就在原来的后面追加添加的内容)
    11 f=open('test','a',encoding='utf-8')#打开文件test,只写
    12 f.write('hello world
    ')#在文件中写入数据,如果文件有数据在文件后面追加
    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

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

  • 相关阅读:
    .net开源工作流ccflow从表数据数据源导入设置
    驰骋开源的asp.net工作流程引擎java工作流 2015 正文 驰骋工作流引擎ccflow6的功能列表
    app:clean classes Exception
    Android Couldn't load BaiduMapSDK
    android okvolley框架搭建
    compileDebugJavaWithJavac
    android重复的文件复制APK META-INF许可证错误记录
    android listview多视图嵌套多视图
    通讯录笔记
    面试总结
  • 原文地址:https://www.cnblogs.com/zzqit/p/9170456.html
Copyright © 2011-2022 走看看