Python初识day2

本节内容:

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作

一、列表、元组操作

1. 列表: 列表是我们使用频率最高的数据类型之一,由一个中括号 [ ]括起来,里面的值可以是任何类型(也可以是一个列表)。

  列表的创建: 

  names = ['Island' , 'zhuzhu', 'zhu']

  列表的主要使用方法有:增、删、改、查。

  增:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd']] 2zhu1 = ['e', 'fg'] 3zhu.append('a zhu') #第一种方法——.append()括号内加上所要加的内容,默认加到最后一位。 4print(zhu) #结果:['a', 'b', 'c', 1, 2, [3, 'd'], 'a zhu'] 5 6zhu.insert(2, 'azhu') #第二种方法——.insert() 在第2个位置前强行加入需要的内容 7print(zhu) #结果:['a', 'b', 'azhu', 'c', 1, 2, [3, 'd'], 'a zhu'] 8 9zhu.extend(zhu1) #第三种方法——.extend()在zhu列表的后边扩展zhu1 10print(zhu) #结果:['a', 'b', 'azhu', 'c', 1, 2, [3, 'd'], 'a zhu', 'e', 'fg']

  删:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd']] 2zhu.remove('c') #删除指定元素 3print(zhu) #结果:['a', 'b', 1, 2, [3, 'd']] 4 5del zhu[0] #利用索引值删除指定元素 6print(zhu) #结果:['b', 1, 2, [3, 'd']] 7 8zhu.pop() #删除列表最后一个值 9print(zhu) #结果:['b', 1, 2]

  改:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd']] 2 3zhu[3] = '变' #利用索引值修改 4print(zhu) #结果:['a', 'b', 'c', '变', 2, [3, 'd']]

  查:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd']] 2 3print('zhu[1]:', zhu[1], '\nzhu[-1]:', zhu[-1]) #:利用索引值查找,索引值为负时表示倒数第n个 (\n为换行) 4#结果:zhu[1]: b 5# zhu[-1]: [3, 'd']

  统计:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd'], 'a', 2, '5'] 2print(zhu.count('a')) #统计元素个数 3 #结果:2

  获取下标:

1zhu = ['a', 'b', 'c', 1, 2, [3, 'd'], 'a', 2, '5'] 2print(zhu.index('a')) #获取下标 默认从左到右搜索找到的第一个元素,获取他的下标 3 #结果:0 4print(zhu.index('a',2)) #获取第二个'a'的下标 5 #结果:6

排序和反转:

1# zhu = ['a', 'b', 'c', 1, 2, [3, 'd'], 'a', 2, '5'] 2# zhu.sort() 3# 结果: 4# Traceback (most recent call last): 5# File "C:/Users/48316/PycharmProjects/untitled1/zhu1/text_.py", line 2, in <module> 6# zhu.sort() 7# TypeError: unorderable types: int() < str() py3之后不同的数据类型不能排序 8zhu = ['a', 'b', 'c', '1', '2', 'a', '2', '5'] 9zhu.sort() #按照ASCII码排序 10print(zhu) #结果['1', '2', '2', '5', 'a', 'a', 'b', 'c'] 11zhu.reverse() #反转 12print(zhu) #结果['c', 'b', 'a', 'a', '5', '2', '2', '1']

**2.元组:**元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。它只有2个方法,一个是count,一个是index,完毕。

    语法:

1zhu = ('a', 'b', 'c', 1, 2, [3, 'd'], 'a', 2, '5') #和列表基本类似 只是用圆括号括起来 2print(zhu) #结果:('a', 'b', 'c', 1, 2, [3, 'd'], 'a', 2, '5')

二、字符串操作

特性:不可修改。

各种操作:

1#_author: "a zhu" 2#_date: 2018/2/1 3 4str='abcd EFGH ijk' #直接创建字符串 用引号括起来 5 6print(str.upper()) #将字符串内所有的字符大写 7#结果:ABCD EFGH IJK 8 9print(str.casefold())#将字符串内所有的字符小写 10#结果:abcd efgh ijk 11 12print(str.capitalize())#将字符串首字母大写 13#结果:Abcd efgh ijk 14 15print(str.count(' ')) #统计字符‘ ’出现次数 16#结果:2 17 18print(str.endswith('jk'))#判断字符串是否以'jk'结尾 19#结果:True 20 21print(str.center(30,'-')) #给字符串两边加上'-',一共3022#结果:--------abcd EFGH ijk--------- 23 24print(str.find(' ')) #找到字符' '的索引值,找不到返回-1 25#结果:4 26 27 28msg = "my name is {}, and age is {}." 29print(msg.format('飞天zhuzhuxia','19')) 30#结果:my name is 飞天zhuzhuxia, and age is 19. 31 32msg = "my name is {1}, and age is {0}." 33print(msg.format('飞天zhuzhuxia','19')) 34#结果:my name is 19, and age is 飞天zhuzhuxia. 35 36msg = "my name is {name}, and age is {age}." 37print(msg.format(age='19', name='飞天zhuzhuxia')) 38#结果:my name is 飞天zhuzhuxia, and age is 19. 39 40print(msg.partition('is')) #从'is'出断开 变为三个元素组成的元组 41#结果:('my name ', 'is', ' {name}, and age is {age}.') 42 43print(str.ljust(20,'-')) 44#结果:abcd EFGH ijk------- 45 46print(str.rjust(20,'-')) 47#结果:-------abcd EFGH ijk

三、字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

字典的创建:

1dict ={ 2 'shannxi': 'xian', 3 'sichuan': 'chengdou', 4 'hunan': 'zhengzhou', 5 'shanxi': 'taiyuan', 6 'beijing': 'sanlitun' 7} #字典由一对一对的键值对组成

  字典的增、删、改、查:

增加:

1dict['shanghai'] = '东方明珠'#直接输入新的键值,给简直赋值就可增加 2print(dict) 3#结果:{'shanxi': 'taiyuan', 'hunan': 'zhengzhou', 'sichuan': 'chengdou', 'shannxi': 'xian', 'shanghai': '东方明珠', 'beijing': 'sanlitun'}

     删除:

1dict.pop('shanxi') 2print(dict) 3#结果:{'sichuan': 'chengdou', 'beijing': 'sanlitun', 'shannxi': 'xian', 'hunan': 'zhengzhou'} 4del dict['sichuan'] 5print(dict) 6#结果:{'beijing': 'sanlitun', 'shannxi': 'xian', 'hunan': 'zhengzhou'} 7dict.popitem()#随机删除 8print(dict) 9#结果:{'beijing': 'sanlitun', 'hunan': 'zhengzhou'}

    修改:

1dict['beijing'] = 'chaoyang' #利用键值进行修改 2print(dict) #结果:{'beijing': 'chaoyang', 'hunan': 'zhengzhou', 'sichuan': 'chengdou', 'shanxi': 'taiyuan', 'shannxi': 'xian'}

查看:

1print(dict['shanxi']) #利用键值可以查看 但是如果没有该键值就会报错 2#结果:taiyuan 3print(dict.get('sichuan1'))#这样就不会报错 如果没有就会返回None

其他:

1print(dict.values()) 2#结果:dict_values(['xian', 'zhengzhou', 'chengdou', 'taiyuan', 'sanlitun']) 3print(dict.keys()) 4#结果:dict_keys(['beijing', 'hunan', 'sichuan', 'shanxi', 'shannxi']) 5 6b = {1: 2, 3: 4} 7dict.update(b) 8print(dict) 9#结果:{1: 2, 'sichuan': 'chengdou', 3: 4, 'shanxi': 'taiyuan', 'hunan': 'zhengzhou', 'shannxi': 'xian', 'beijing': 'sanlitun'}

    循环dict:

1for key in dict: 2 print(key,dict[key]) 3'''hunan zhengzhou 4shannxi xian 5beijing sanlitun 6shanxi taiyuan 7sichuan chengdou''' 8for k,v in dict.items(): #会先把dict转成list,数据里大时莫用 9 print(k,v) 10'''hunan zhengzhou 11shannxi xian 12shanxi taiyuan 13beijing sanlitun 14sichuan chengdou'''

四、集合操作

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

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

各种使用方法:

1s = set([3, 5, 9, 10]) # 创建一个数值集合 2 3t = set("Hello") # 创建一个唯一字符的集合 4 5t.add('c') #添加元素 6print(t) #结果:{'H', 'c', 'e', 'l', 'o'} 7 8s.update([10,37,42]) # 在s中添加多项 9print(s) #结果:{3, 37, 5, 9, 10, 42} 10 11t.remove('H') #删除指定元素 12print(t) #结果:{'c', 'e', 'l', 'o'} 13 14print(len(s)) #set的长度 15#结果:6 16 17print('x' in s) #测试x是否是s的成员 18#结果:False 19print('x' not in s ) #测试x是否不是s的成员 20#结果:True 21print(s.issubset(t)) #结果:False 22#s <= t 测试是否s中的每一个元素都在t中 23 24print(s.issuperset(t))#结果:False 25#s >= t #测试是否t中的每一个元素都在s中 26 27print(s.union(t)) #结果:{'e', 3, 42, 37, 5, 'l', 'c', 9, 10, 'o'} 28#s | t 返回一个新的set包含s和t中的每一个元素 29 30print(s.intersection(t))#结果:set() 31#s & t 返回一个新的set包含s和t中的公共元素 32 33print(s.difference(t))#结果:{3, 5, 37, 9, 10, 42} 34#s - t 返回一个新的set包含s中有但是t中没有的元素 35 36print(s.symmetric_difference(t))#结果:{'l', 3, 37, 5, 9, 10, 42, 'e', 'c', 'o'} 37#s ^ t 返回一个新的set包含s和t中不重复的元素

五、文件操作

对文件操作流程

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

现在有一个word文件如下:

  纤云弄巧,飞星传恨,银汉迢迢暗度。

  金风玉露一相逢,便胜却人间无数。

  柔情似水,佳期如梦,忍顾鹊桥归路。

  两情若是久长时,又岂在朝朝暮暮。

1f = open('鹊桥仙') #打开文件 2data=f.read()#获取文件内容 3f.close() #关闭文件

   注意 if in the win,hello文件是utf8保存的,打开文件时open函数是通过操作系统打开的文件,而win操作系统

默认的是gbk编码,所以直接打开会乱码,需要f=open('hello',encoding='utf8'),hello文件如果是gbk保存的,则直接打开即可。

三种最基本的文件打开模式:

1# f = open('鹊桥仙2','r') #打开文件 只读 2# f = open('鹊桥仙2','w') #打开文件 只写 3# f = open('鹊桥仙2','a') #打开文件 追加 4#如果系统找不到要打开的文件名,则会创建一个文件。

集体操作:

1f = open('鹊桥仙') #打开文件 2# data1=f.read()#获取文件内容 3# data2=f.read()#获取文件内容 4# 5# print(data1) 6# print('...',data2) 7# data=f.read(5)#获取文件内容 8 9# data=f.readline() 10# data=f.readline() 11# print(f.__iter__().__next__()) 12# for i in range(5): 13# print(f.readline()) 14 15# data=f.readlines() 16 17# for line in f.readlines(): 18# print(line) 19 20 21# 问题来了:打印所有行,另外第3行后面加上:'end 3' 22# for index,line in enumerate(f.readlines()): 23# if index==2: 24# line=''.join([line.strip(),'end 3']) 25# print(line.strip()) 26 27#切记:以后我们一定都用下面这种 28# count=0 29# for line in f: 30# if count==3: 31# line=''.join([line.strip(),'end 3']) 32# print(line.strip()) 33# count+=1 34 35# print(f.tell()) 36# print(f.readline()) 37# print(f.tell())#tell对于英文字符就是占一个,中文字符占三个,区分与read()的不同. 38# print(f.read(5))#一个中文占三个字符 39# print(f.tell()) 40# f.seek(0) 41# print(f.read(6))#read后不管是中文字符还是英文字符,都统一算一个单位,read(6),此刻就读了6个中文字符 42 43#terminal上操作: 44f = open('鹊桥仙2','w') 45# f.write('hello \n') 46# f.flush() 47# f.write('world') 48 49# 应用:进度条 50# import time,sys 51# for i in range(30): 52# sys.stdout.write("*") 53# # sys.stdout.flush() 54# time.sleep(0.1) 55 56 57# f = open('鹊桥仙2','w') 58# f.truncate()#全部截断 59# f.truncate(5)#全部截断 60 61 62# print(f.isatty()) 63# print(f.seekable()) 64# print(f.readable()) 65 66f.close() #关闭文件

其他的文件模式:

1# f = open('鹊桥仙2','w') #打开文件 2# f = open('鹊桥仙2','a') #打开文件 3# f.write('莫等闲1\n') 4# f.write('白了少年头2\n') 5# f.write('空悲切!3') 6 7 8# f.close() 9 10#r+,w+模式 11# f = open('鹊桥仙2','r+') #以读写模式打开文件 12# print(f.read(5))#可读 13# f.write('hello') 14# print('------') 15# print(f.read()) 16 17 18# f = open('鹊桥仙2','w+') #以写读模式打开文件 19# print(f.read(5))#什么都没有,因为先格式化了文本 20# f.write('hello alex') 21# print(f.read())#还是read不到 22# f.seek(0) 23# print(f.read()) 24 25#w+与a+的区别在于是否在开始覆盖整个文件 26 27 28# ok,重点来了,我要给文本第三行后面加一行内容:'hello 岳飞!' 29# 大家会说,前面不是做过修改了吗? 大哥,刚才是修改内容后print,现在是对文件进行修改!!! 30# f = open('鹊桥仙2','r+') #以写读模式打开文件 31# f.readline() 32# f.readline() 33# f.readline() 34# print(f.tell()) 35# f.write('hello 岳飞') 36# f.close() 37# 和想的不一样,不管事!那涉及到文件修改怎么办呢? 38 39# f_read = open('小重山','r') #以写读模式打开文件 40# f_write = open('小重山_back','w') #以写读模式打开文件 41 42# count=0 43# for line in f_read: 44 # if count==3: 45 # f_write.write('hello,岳飞\n') 46 # 47 # else: 48 # f_write.write(line) 49 50 51 # another way: 52 # if count==3: 53 # 54 # line='hello,岳飞2\n' 55 # f_write.write(line) 56 # count+=1

文件操作还有许多小点就不一一列举了。



 面试题小分享:

11.python的最大递归层数是多少?

999

12.求结果

1v1 = 1 or 3
 #v1=1 2 v2 = 1 and 3
 #v2=3 3 v3 = 0 and 2 and 1 #v3 = 0 4
 v4 = 0 and 2 or 1 #v4 = 1 5
 v5 = 0 and 2 or 1 or 4 #v5 = 1 6
 v6 = 0 or Flase and 1 #v6=0#a=10 b=20

and

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

(a and b) 返回 20。

or

x or y

布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。

(a or b) 返回 10。

not

not x

布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

not(a and b) 返回 False

#python具体的运算符的用法请参考:http://www.runoob.com/python/python-operators.html

13.ascii、unicode、utf-8、gbk的区别?

1简单说一下吧: 2ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符, 3 4Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,可以用在内存处理中,兼容了utf-8,gbk,ASCII5 6utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的, 7 8gbk 是中文的字符编码,用2个字节代表一个字符,

14.字节码和机器码的区别?

1简单来说: 2机器码:是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到。 3字节码:是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

View Code

15.三元运算规则以及应用场景?

1#先说下三元运算符的表达式: 2#为真时的结果 if 判定条件 else 为假时的结果 3#事例 41 if 3>2 else 0 #输出:1

View Code

16.列举 Python2和Python3的区别?

11.print 函数 22.Unicode 33.除法运算 44.异常处理 55.xrange 66.不等运算符 77.去掉了repr表达式 88.多个模块被改名(根据PEP899.数据类型 10详细请看:http://www.runoob.com/python/python-2x-3x.html  或者:https://www.cnblogs.com/weikunzz/p/6857971.html

17.用一行代码实现数值交换:a=1  ,   b=2

a, b  = b, a

18.Python3和Python2中 int 和 long的区别?

1int(符号整数):通常被称为是整数或整数,没有小数点的正或负整数。 2long(长整数):或渴望,无限大小的整数,这样写整数和一个大写或小写的L3float(浮点实际值):彩车,代表实数,小数除以整数部分和小数部分的书面。花车也可能是在科学记数法与E或指示的10次方é(2.5e2= 2.5×102=250)。 4complex (复数):+ BJ的形式,其中a,b是彩车和J(或J)表示-1的平方根(这是一个虚数)。 a是真正的数字部分,b是虚部。复数不使用Python编程。

19.xrange和range的区别?

1#range 2#函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表。 3#eg: 4 range(10) 5#输出[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 6 range(2,10) 7#输出[2, 3, 4, 5, 6, 7, 8, 9] 8 range(2,10,2) 9#输出[2, 4, 6, 8] 10 type(_) 11#输出<type 'list'> 12 13 14 15 16#xrange 17#函数说明:和range 的用法完全相同,但是返回的是一个生成器。 18#eg: 19 xrange(10) 20#输出xrange(10) 21xrange(2,10) 22#输出xrange(2, 10) 23xrange(2,10,2) 24#输出xrange(2, 10, 2) 25type(_) 26#输出<type 'xrange'> 27list(xrange(2, 10, 2)) 28#输出[2, 4, 6, 8] 29 30#但是要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用。

View Code

20.文件操作时:xreadlines和readlines的区别?

1* readline() >> reads a single line from file with newline at the end。 2 3 readline()读取一行内容,放到一个字符串变量,返回str类型。 4 5* readlines() >> returns a list containing all the lines in the file 6 7readlines() 读取文件所有内容,按行为单位放到一个列表中,返回list类型。 8 9* xreadlines() >> Returns a generator to loop over every single line in the file 10 11 返回一个生成器,来循环操作文件的每一行。循环使用时和readlines基本一样,但是直接打印就不同

View Code

n

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

(a and b) 返回 20。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

Python初识day2 - HelloWorld