Python基础2(2017-07-18)

  1、列表、元素操作

  定义列表

  list = [‘Doris‘,‘Linda‘,‘Dandy‘,‘Allen‘]

  基础的读取操作

  

1 list = [‘Doris‘,‘Linda‘,‘Dandy‘,‘Allen‘]
2 print(list[0]) # 填写元素下表就可以读取
3 print(list[-1])# 根据基础一讲过的可以知道-1代表最后一位

  结果如下:

  

  

 1 import copy
 2 list = [‘scott‘,‘steven‘,‘linda‘,‘doris‘,‘joy‘,‘dandy‘]
 3 listcopy = list.copy()
 4 #add
 5 list.append(‘allen‘)#追加
 6 list.insert(0,‘alex‘)#插入
 7 list.insert(2,‘i am follow scott‘)
 8 #modify
 9 list[2]=‘i do not care‘
10 print(list)
11 #delete
12 del list[2]
13 list.remove(‘allen‘)
14 list.pop()#pop()默认参数是-1表示数组的最后一位,当然也可以加上下标数字来指定删除
15
16 print(list)
17 print(listcopy)
18 #search
19 print(list[0:2])#表示切片取出0,1 (不包括2)
20 print(list[1:-1])#表示切片取出1到最后一位但不包含它
21 print(list[1:])#想要包含最后一位的话,使用这种格式
22 print(list[:2])#同理从数组开始取也可以这样写
23 print(list[::2])#从for循环我们得到一个类似的样式是否此处也可以用隔位符来隔位取?答案当然是可以的
24 #扩展  追加一个数组
25 listend=[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
26 list.extend(listend)
27 #统计
28 print(list.count(‘scott‘))
29 print(list)

  代码里涉及到增删改查的运行结果如下:

  [‘alex‘, ‘scott‘, ‘i do not care‘, ‘steven‘, ‘linda‘, ‘doris‘, ‘joy‘, ‘dandy‘, ‘allen‘]
  [‘alex‘, ‘scott‘, ‘steven‘, ‘linda‘, ‘doris‘, ‘joy‘]
  [‘scott‘, ‘steven‘, ‘linda‘, ‘doris‘, ‘joy‘, ‘dandy‘]
  [‘alex‘, ‘scott‘]
  [‘scott‘, ‘steven‘, ‘linda‘, ‘doris‘]
  [‘scott‘, ‘steven‘, ‘linda‘, ‘doris‘, ‘joy‘]
  [‘alex‘, ‘scott‘]
  [‘alex‘, ‘steven‘, ‘doris‘]
  1
  [‘alex‘, ‘scott‘, ‘steven‘, ‘linda‘, ‘doris‘, ‘joy‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]

  数组的排序&翻转&获取下标:

  

1 list = [‘scott‘,‘steven‘,‘linda‘,‘doris‘,‘joy‘,‘dandy1‘,‘Dandy‘,‘2alex‘,‘_guapi‘]
2 list.sort()#排序
3 print(list)
4 list.reverse()#翻转
5 print(list)

  运行结果如下:

  [‘2alex‘, ‘Dandy‘, ‘_guapi‘, ‘dandy1‘, ‘doris‘, ‘joy‘, ‘linda‘, ‘linda‘, ‘scott‘, ‘steven‘]
  [‘steven‘, ‘scott‘, ‘linda‘, ‘linda‘, ‘joy‘, ‘doris‘, ‘dandy1‘, ‘_guapi‘, ‘Dandy‘, ‘2alex‘]
  2 #其中如果存在2个同样的值,输出第一个的位置

  上面基本讲完了数组的基本操作,现在提一点,刚刚对于copy只是一带而过,但是copy真的这么简单么?答案当然是否定的,下面我们讲解浅copy

  

 1 import copy
 2 #首先我们定义一个多维数组
 3 list = [‘scott‘,[‘steven‘,‘10000‘],[‘linda‘,‘10530‘],‘doris‘,‘joy‘,‘dandy1‘,‘Dandy‘]
 4 #copy 列表
 5 listnew = list.copy()
 6 #改一个单个的试一下
 7 list[0] =‘老陈‘
 8 #再改一个里面的数组试试
 9 list[1][1] =‘50000‘
10 print(list)
11 print(listnew)

  仔细看一下运行结果:

  [‘老陈‘, [‘steven‘, ‘50000‘], [‘linda‘, ‘10530‘], ‘doris‘, ‘joy‘, ‘dandy1‘, ‘Dandy‘]
  [‘scott‘, [‘steven‘, ‘50000‘], [‘linda‘, ‘10530‘], ‘doris‘, ‘joy‘, ‘dandy1‘, ‘Dandy‘]

  代码只是改了原数组里面的数组,为什么会copy的那份也被改了呢?这就是我们提到的浅copy,只是浅浅的复制了第一层的数值,可以理解为第一层的下表指向这个数组,此数组魔种意义上来说,类似于一个共享的。

  现在简单说一下元组

  元组其实跟数组很类似也是存储一组数,只是一旦被创建了,就不能修改,所以又叫做只读列表

  yuanzu = (‘tenglan wu‘,‘daqiaoweijiu‘,‘tianhai yi‘,‘jiatengying‘)
  print(yuanzu)

  没什么好说的,有且只有2个方法,index,count,(GG)

  2、字符串操作 

  字符串的特性:不可修改。  

  

 1 name = "my NAme is dandy"
 2
 3 print(name.capitalize())#首字母大写
 4 print(name.casefold())#全部小写
 5 print(name.center(50,‘-‘))#用-补全2侧
 6 print(name.count(‘a‘))#a的数量
 7 print(name.encode())#二进制编码 输出结果会带 b
 8 print(name.encode().decode())#二进制编码与转码
 9 print(name.endswith(‘dy‘))#是否以此字符结尾
10
11 name1 = ‘i am \t dandy‘
12 print(name1.expandtabs(20))#TAB位置补全到20
13 print(name1.find(‘z‘))#找不到返回-1,有多个返回最前面的一个位置
14 print(name1.find(‘a‘))
15 print(name1.rfind(‘a‘))#rfind,lfind

  运行结果:

  My name is dandy
  my name is dandy
  -----------------my NAme is dandy-----------------
  1
  b‘my NAme is dandy‘
  my NAme is dandy
  True
  i am                 dandy
  -1
  2
  8

  说到这,再熟悉一下format

  

1 #format
2 msg = ‘my name is {} and i am {} years old‘
3 print(msg.format(‘dandy‘,‘18‘))
4 msg1 = ‘my name is {0} and i am {1} years old‘
5 print(msg1.format(‘dandy‘,‘18‘))
6 msg2 = ‘my name is {name} and i am {age} years old‘
7 print(msg2.format(name=‘dandy‘,age=18))
8 msg3 = ‘my name is {name} and i am {age} years old‘
9 print(msg3.format_map({‘name‘:‘dandy‘,‘age‘:‘18‘}))

   结果如下

  my name is dandy and i am 18 years old

  再来一波

  

 1 name = "my Name is dandy"
 2 print(name.index(‘a‘))#第一个a 的位置
 3 print(‘9aD‘.isalnum())#是否全部为字母数字,是返回true
 4 print(‘97823‘.isdigit())#是否是纯整数,是,返回true
 5 print(‘11283121‘.isnumeric())#港真的,没发现跟上面的区别,妄点明
 6 namelist = ‘aaa bbb ccc‘
 7 print(‘My Name Is‘.istitle())#是否全部首字母大写,是,返回true
 8 msgadc=‘taylor swift‘
 9 print(msgadc.ljust(20,‘*‘))# 填充
10 print(msgadc.rjust(20,‘*‘))
11
12 msgzzz=‘ I love U  \r‘
13 print(msgzzz.swapcase())#转换大小写
14 print(msgzzz.zfill(20))#左侧0填满到字节数
15 print(msgzzz.strip())#去掉空格跟\r ,lstrip & rstrip 不了解的就是瓜皮了
16
17 msg1=‘print‘
18 print(msg1.isidentifier())#是否是关键字

   结果如下

  4
  True
  True
  True
  True
  taylor swift********
  ********taylor swift
   i LOVE u
  00000000 I love U
  I love U
  True

  最后一波很有趣很有趣很有趣的语法

  

 1 intext = ‘abcdefgh‘
 2 outtext = ‘[email protected]#4$‘
 3 trantext = str.maketrans(intext,outtext)
 4 example = ‘the shape of you‘
 5 print(example.translate(trantext))
 6 #类似于一个解密加密的过程,不过却很山炮,真正的加密不是这样的
 7 msg = ‘a and b and c ‘
 8 print(msg.rpartition(‘and‘))
 9 print(msg.rpartition((‘b‘)))
10 print(msg.rpartition((‘or‘)))
11 #如果存在多个匹配字符,默认最后一个操作;如果没有的,补充2个空的
12 namelist = ‘aaa bbb ccc‘
13 namelist1=(‘aaa‘,‘bbb‘,‘ccc‘)
14 print(‘|‘.join(namelist))#隔每个字符
15 print(‘|‘.join(namelist1))#分开3个字符串

    结果如下

  t$3 s$1p3 o# you
  (‘a and b ‘, ‘and‘, ‘ c ‘)
  (‘a and ‘, ‘b‘, ‘ and c ‘)
  (‘‘, ‘‘, ‘a and b and c ‘)
  a|a|a| |b|b|b| |c|c|c
  aaa|bbb|ccc

 3、字典操作

  字典是一种Key - Value的数据类型,我们上学用的字典根据字母,笔画查找,这个有点类似的用key来找。

  语法

 info = {
     ‘10000‘:‘Linda Niu‘,
     ‘10001‘:‘Dandy Zhang‘,
     ‘10002‘:‘Doris Jing‘,
     ‘10003‘:‘Danli Wang‘,
     ‘10004‘:‘Xingyu Gu‘
  }

  查询

   

 1 #因为字典的key value 的特性,职能根据key来查询(下标,value都不可以)
 2 print(info[‘10004‘])#查询确定存在值的时候使用,不然会报错
 3 print(info.get(‘10008‘))#查不到显示none
 4 print(‘10001‘ in info)#返回真
 5
 6 info[‘10000‘]=‘曾小琴‘#修改
 7 info[‘10005‘]=‘瓜皮‘#没有,自动添加
 8 print(info)
 9 #删除
10 del info[‘10005‘]
11 info.pop("10004")
12 info.popitem()#随便删除
13 print(info)

  结果

 Xingyu Gu
 None
 True
 {‘10000‘: ‘曾小琴‘, ‘10001‘: ‘Dandy Zhang‘, ‘10002‘: ‘Doris Jing‘, ‘10003‘: ‘Danli Wang‘, ‘10004‘: ‘Xingyu Gu‘, ‘10005‘: ‘瓜皮‘}
 {‘10000‘: ‘曾小琴‘, ‘10001‘: ‘Dandy Zhang‘, ‘10002‘: ‘Doris Jing‘}

  字典的多级嵌套

   语法

  

 1 menu={
 2     ‘江苏‘:{
 3         ‘南京‘:{
 4             ‘江宁区‘:["南京交院","江宁万达","南京金鹰"],
 5             ‘秦淮区‘:["夫子庙","中华门","朝天宫"],
 6             ‘玄武区‘:["南京火车站","中山陵","新街口"]
 7         },
 8         ‘苏州‘:{
 9             ‘园区‘:[‘圆融‘,"独墅湖高校区","李公堤"],
10             ‘吴中区‘:[‘吴中万达‘,‘南门汽车站‘]
11                 },
12         ‘无锡‘:{},
13         ‘泰州‘:{}
14     },
15     ‘安徽‘:{
16         ‘合肥‘,
17         ‘芜湖‘
18     },
19     ‘浙江‘:{
20         ‘杭州‘,
21         ‘宁波‘,
22         ‘金华‘
23     }
24 }

   操作

  menu[‘江苏‘][‘南京‘][‘江宁区‘][0] += ‘我跟南京交院是一条‘
  print(menu[‘江苏‘][‘南京‘][‘江宁区‘])

  结果

  [‘南京交院我跟南京交院是一条‘, ‘江宁万达‘, ‘南京金鹰‘]

  扩充

  

 1 info = { "1801":"Dandy","1802":"Linda","1803":"Claire","1804":"Taylor"}
 2 print(info.values())
 3 print(info.keys())
 4 info.setdefault("1801","宇宙无敌帅")#存在的话,不改;不存在的话新增一条
 5 info.setdefault("1805","宇宙无敌帅")
 6 print(info)
 7 #update
 8 aa_ = {"10086":"中国移动","10000":"中国电信","10010":"中国联通"}
 9 info.update(aa_)
10 print(info)
11 print(info.items())

  结果

  dict_values([‘Dandy‘, ‘Linda‘, ‘Claire‘, ‘Taylor‘])
  dict_keys([‘1801‘, ‘1802‘, ‘1803‘, ‘1804‘])
  {‘1801‘: ‘Dandy‘, ‘1802‘: ‘Linda‘, ‘1803‘: ‘Claire‘, ‘1804‘: ‘Taylor‘, ‘1805‘: ‘宇宙无敌帅‘}
  {‘1801‘: ‘Dandy‘, ‘1802‘: ‘Linda‘, ‘1803‘: ‘Claire‘, ‘1804‘: ‘Taylor‘, ‘1805‘: ‘宇宙无敌帅‘, ‘10086‘: ‘中国移动‘, ‘10000‘: ‘中国电信‘, ‘10010‘: ‘中国联通‘}
  dict_items([(‘1801‘, ‘Dandy‘), (‘1802‘, ‘Linda‘), (‘1803‘, ‘Claire‘), (‘1804‘, ‘Taylor‘), (‘1805‘, ‘宇宙无敌帅‘), (‘10086‘, ‘中国移动‘), (‘10000‘, ‘中国电信‘), (‘10010‘, ‘中国联通‘)])

  看一种生成字典的方法(有点坑,注意)

  

1 a = dict.fromkeys([1,2,3],‘tokoy hot‘)
2 print(a)
3 a[3]=‘一本道‘
4 print(a)
5 b = dict.fromkeys([1,2,3],[2,{"Company":"tokoy hot"},4])
6 print(b)
7 b[1][1]["Company"] = "一本道"
8 print(b)

  注意看结果

  {1: ‘tokoy hot‘, 2: ‘tokoy hot‘, 3: ‘tokoy hot‘}
  {1: ‘tokoy hot‘, 2: ‘tokoy hot‘, 3: ‘一本道‘}
  {1: [2, {‘Company‘: ‘tokoy hot‘}, 4], 2: [2, {‘Company‘: ‘tokoy hot‘}, 4], 3: [2, {‘Company‘: ‘tokoy hot‘}, 4]}
  {1: [2, {‘Company‘: ‘一本道‘}, 4], 2: [2, {‘Company‘: ‘一本道‘}, 4], 3: [2, {‘Company‘: ‘一本道‘}, 4]}

  循环简介dict  

  info = { "1801":"Dandy","1802":"Linda","1803":"Claire","1804":"Taylor"}
  for key in info:
      print(key,info[key])
  for a,b in info.items():
      print(a,b)

  运行结果

  1801 Dandy
  1802 Linda
  1803 Claire
  1804 Taylor
  1801 Dandy
  1802 Linda
  1803 Claire
  1804 Taylor

 4、集合操作

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

   去重:把一个列表变成集合,自动去重

   关系测试:测试两组数据之间的交集,差集,并集

   

 1 list = [1,2,3,4,5,5,5,6,7,8,8,1,9]
 2 lista = set(list)
 3 print(lista)
 4
 5 list1 = set([1,3,5,7,9,6,8])
 6 list2 = set([2,4,6,8,10,11])
 7 #1,2 的并集
 8 print(list1.union(list2))
 9 print(list1 | list2)
10 #交集
11 print(list1.intersection((list2)))
12 print(list1 & list2)
13 #差集
14 print(list1.difference(list2))
15 print(list1 - list2)
16 print(list2.difference(list1))
17 print(list2 - list1)

   结果

  {1, 2, 3, 4, 5, 6, 7, 8, 9}
  {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
  {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
  {8, 6}    {8, 6}
  {1, 3, 5, 7, 9}
  {1, 3, 5, 7, 9}
  {11, 2, 10, 4}
  {11, 2, 10, 4}

    语法函数

  

 1 list = set([1,3,5,7,9,6,8])
 2 name = set([5,3])
 3 #增
 4 list.add(‘a‘)#只能加一个元素
 5 list.update([‘x‘,18,‘y‘])
 6 list.remove(1)
 7 print(len(list))
 8 print(list)
 9 print(name.issubset(list))#是否是子集
10 print(list.issuperset(name))#是否是父集
11 a=3
12 print(a in list)#是否存在于集合
13 list.copy()#浅copy

   结果

  10
  {3, 5, 6, 7, 8, 9, ‘x‘, ‘a‘, 18, ‘y‘}
  True
  True
  True
时间: 2024-10-17 12:56:33

Python基础2(2017-07-18)的相关文章

日本IT行业劳动力缺口达22万 在日中国留学生迎来就业好时机 2017/07/18 11:25:09

作者:倪亚敏 来源:日本新华侨报 发布时间:2017/07/18 11:25:09   据日本政府提供的数据,日本2018年应届毕业生的"求人倍率"已经达到了1.78倍.换言之,就是100名大学生里有178个就业岗位可选择,即使所有大学毕业生都进入劳动力市场,也还有78个岗位空缺.劳动力现状是寒冷冬天,而学生们确实迎来了就业春天. 在众多岗位当中,日本的信息技术(IT)领域采用的外国人留学生最多.去年,已经在日本企业就职的留学生当中(除去制造行业),27.3%的毕业生进入了IT行业.根

论计算机硬件基础(2017 5 18作业)

  1.编程语言的作用及与操作系统和硬件的关系   作用:编程语言是人机交流的介质,是程序员让计算机工作的手段和方式...   论关系:编程语言开发而成的成品即为软件,故此关系可以看成是软件操作系统硬件三者的关系.           硬件是操作系统的运行基础,操作系统是软件的运行系统:           软件用来控制操作系统,操作系统用来控制硬件.        应用程序->操作系统->硬件   应用程序由编程语言开发而成的产品.是软件的一类,与系统程序并称为软件.   故此题与上题关系论

2017传智播客python基础班+就业班

2017传智播客python基础班+就业班  地址:http://www.zygx8.com/thread-6085-1-1.html 本课程包含了Python的基础语法和核心编程,以及Python应用中流行的数据库.前端,Web框架,爬虫框架及其分布式策略等技术,包含了丰富的项目案例.适合零基础或有一定Linux和Python基础的学生,特别适合于大专院校计算机专业的学生,学习过各类视频教程的未就业人士以及在职程序员. python基础 linux操作系统基础 1-Linux以及命令 2-li

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

Python基础07 函数

Python基础07 函数 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以说明这个函数的功能. def square_sum(a,b): c = a**2 + b**2 return c 这个函数的功能是求两个数的平方和. 首先

python基础教程_学习笔记18:标准库:一些最爱——shelve

标准库:一些最爱 shelve Shelve唯一有趣的函数是open.在调用它的时候(使用文件名作为参数),它会返回一个Shelf对象,可以用它来存储内容.只需要把它当作普通的字典(但是键一定要作为字符串)来操作即可,在完成工作之后,调用它的close方法. 意识到shelve.open函数返回的对象并不是普通的映射是很重要的. >>> import shelve >>> s=shelve.open('a.txt') >>> s['x']=['a','

python基础07

Python基础学习07-模块 模块 一.模块基础 1.定义 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:目的是实现一个功能 ),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)  2.导入方法 import  module_name (导入一个模块) import  module_name_1,module_name_2(导入多个模块用逗号分隔) f

python 基础教程 笔记 一

第一章 python 基础知识 1.1 数字和数学表达式 1.2 python 2.x 和python 3.x print的区别 1.3 python 2.x 和 python 3.x input 的区别 1.4 数学函数 1.5 input 和 raw_input 区别 第二章 列表和元组 第三章 使用字符串 1.1 数字和表达式 Python 默认的除法:整数/整数,无论是否整除都得到整数,不整除的截取小时部分 1 / 2 0 如果想要Python 执行普通的除法,可以之用浮点数来实现也可以

Python基础-第五天-常用模块

本篇内容: 1.sys模块 2.os模块 3.time模块和datetime模块 4.random模块和string模块 5.shutil模块 6.json模块和pickle模块 7.shelve模块 8.hashlib模块和hmac模块 9.logging模块 10.re模块 一.sys模块 1.sys模块简介 sys模块是Python标准库中自带了一个模块,sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境 2.sys模块的使用 ①pyt

Python基础学习笔记(十)日期Calendar和时间Timer

参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 时间间隔是以秒为单位的浮点函数.获取该时间的实例如下: 时间元组struct_time: 序号 属性 值 0 tm_year 2008 1 tm_mon 1 到 12 2 t