1、列表、元素操作

  定义列表

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

  基础的读取操作

  

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

  结果如下:

  

  

 import copy
list = ['scott','steven','linda','doris','joy','dandy']
listcopy = list.copy()
#add
list.append('allen')#追加
list.insert(0,'alex')#插入
list.insert(2,'i am follow scott')
#modify
list[2]='i do not care'
print(list)
#delete
del list[2]
list.remove('allen')
list.pop()#pop()默认参数是-1表示数组的最后一位,当然也可以加上下标数字来指定删除 print(list)
print(listcopy)
#search
print(list[0:2])#表示切片取出0,1 (不包括2)
print(list[1:-1])#表示切片取出1到最后一位但不包含它
print(list[1:])#想要包含最后一位的话,使用这种格式
print(list[:2])#同理从数组开始取也可以这样写
print(list[::2])#从for循环我们得到一个类似的样式是否此处也可以用隔位符来隔位取?答案当然是可以的
#扩展 追加一个数组
listend=['','','','','']
list.extend(listend)
#统计
print(list.count('scott'))
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']

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

  

 list = ['scott','steven','linda','doris','joy','dandy1','Dandy','2alex','_guapi']
list.sort()#排序
print(list)
list.reverse()#翻转
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

  

 import copy
#首先我们定义一个多维数组
list = ['scott',['steven',''],['linda',''],'doris','joy','dandy1','Dandy']
#copy 列表
listnew = list.copy()
#改一个单个的试一下
list[0] ='老陈'
#再改一个里面的数组试试
list[1][1] =''
print(list)
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、字符串操作 

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

  

 name = "my NAme is dandy"

 print(name.capitalize())#首字母大写
print(name.casefold())#全部小写
print(name.center(50,'-'))#用-补全2侧
print(name.count('a'))#a的数量
print(name.encode())#二进制编码 输出结果会带 b
print(name.encode().decode())#二进制编码与转码
print(name.endswith('dy'))#是否以此字符结尾 name1 = 'i am \t dandy'
print(name1.expandtabs(20))#TAB位置补全到20
print(name1.find('z'))#找不到返回-1,有多个返回最前面的一个位置
print(name1.find('a'))
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

  

 #format
msg = 'my name is {} and i am {} years old'
print(msg.format('dandy',''))
msg1 = 'my name is {0} and i am {1} years old'
print(msg1.format('dandy',''))
msg2 = 'my name is {name} and i am {age} years old'
print(msg2.format(name='dandy',age=18))
msg3 = 'my name is {name} and i am {age} years old'
print(msg3.format_map({'name':'dandy','age':''}))

   结果如下

  my name is dandy and i am 18 years old

  再来一波

  

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

   结果如下

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

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

  

 intext = 'abcdefgh'
outtext = '1!2@3#4$'
trantext = str.maketrans(intext,outtext)
example = 'the shape of you'
print(example.translate(trantext))
#类似于一个解密加密的过程,不过却很山炮,真正的加密不是这样的
msg = 'a and b and c '
print(msg.rpartition('and'))
print(msg.rpartition(('b')))
print(msg.rpartition(('or')))
#如果存在多个匹配字符,默认最后一个操作;如果没有的,补充2个空的
namelist = 'aaa bbb ccc'
namelist1=('aaa','bbb','ccc')
print('|'.join(namelist))#隔每个字符
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'
  }

  查询

   

 #因为字典的key value 的特性,职能根据key来查询(下标,value都不可以)
print(info[''])#查询确定存在值的时候使用,不然会报错
print(info.get(''))#查不到显示none
print('' in info)#返回真 info['']='曾小琴'#修改
info['']='瓜皮'#没有,自动添加
print(info)
#删除
del info['']
info.pop("")
info.popitem()#随便删除
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'}

  字典的多级嵌套

   语法

  

 menu={
'江苏':{
'南京':{
'江宁区':["南京交院","江宁万达","南京金鹰"],
'秦淮区':["夫子庙","中华门","朝天宫"],
'玄武区':["南京火车站","中山陵","新街口"]
},
'苏州':{
'园区':['圆融',"独墅湖高校区","李公堤"],
'吴中区':['吴中万达','南门汽车站']
},
'无锡':{},
'泰州':{}
},
'安徽':{
'合肥',
'芜湖'
},
'浙江':{
'杭州',
'宁波',
'金华'
}
}

   操作

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

  结果

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

  扩充

  

 info = { "":"Dandy","":"Linda","":"Claire","":"Taylor"}
print(info.values())
print(info.keys())
info.setdefault("","宇宙无敌帅")#存在的话,不改;不存在的话新增一条
info.setdefault("","宇宙无敌帅")
print(info)
#update
aa_ = {"":"中国移动","":"中国电信","":"中国联通"}
info.update(aa_)
print(info)
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', '中国联通')])

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

  

 a = dict.fromkeys([1,2,3],'tokoy hot')
print(a)
a[3]='一本道'
print(a)
b = dict.fromkeys([1,2,3],[2,{"Company":"tokoy hot"},4])
print(b)
b[1][1]["Company"] = "一本道"
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、集合操作

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

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

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

   

 list = [1,2,3,4,5,5,5,6,7,8,8,1,9]
lista = set(list)
print(lista) list1 = set([1,3,5,7,9,6,8])
list2 = set([2,4,6,8,10,11])
#1,2 的并集
print(list1.union(list2))
print(list1 | list2)
#交集
print(list1.intersection((list2)))
print(list1 & list2)
#差集
print(list1.difference(list2))
print(list1 - list2)
print(list2.difference(list1))
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}

    语法函数

  

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

   结果

  10
  {3, 5, 6, 7, 8, 9, 'x', 'a', 18, 'y'}
  True
  True
  True

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

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

    作者:倪亚敏 来源:日本新华侨报 发布时间:2017/07/18 11:25:09     据日本政府提供的数据,日本2018年应届毕业生的“求人倍率”已经达到了1.78倍.换言之,就是100名大学生 ...

  2. 【python基础】第07回 运算符和流程控制 2

    本章内容概要 1.逻辑运算符补充 2.循环结构 本章内容详解 1.逻辑运算符补充 两边都不为0的情况 or 直接取前面的值 and 直接取后面的值如果存在0的情况 and 直接取0 or 直接取非0 ...

  3. 十八. Python基础(18)常用模块

    十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...

  4. python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))

    首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...

  5. Python基础教程【读书笔记】 - 2016/7/18

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第七波:第3章 字符串 介绍如何使用字符串格式化其他的值,并简单了解一下利用字符串的分割.联接.搜索等方法能做些什么. ...

  6. Python基础教程 - Tdcqma

      1.1 普通字符串 1.21 错误与异常 1.41 XXXXXX 1.61 XXXXXX 1.81 XXXXXX 1.101 XXXXXX 1.2 转义字符串 1.22 装饰器         1 ...

  7. (路-莫)-Python基础一

    一,Python介绍 1,python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打 ...

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

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...

  9. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  10. Python基础-week05

    本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...

随机推荐

  1. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(2)

    1.restful api介绍 1.前后端分离的优缺点 1.为什么要用前后端分离 1.pc.app.pad多端适应 2.SPA(单页面应用)开发模式开始流行 3.前后端分离职责不清 4.开发效率问题, ...

  2. 使用bedtools提取vcf多个位置的变异(extract multi-region of genotypes by bedtools)

    1.下载安装bedtools: 2.生成bed文件:标准的bed文件格式如下: chr7 127471196 127472363 Pos1 0 + 127471196 127472363 255,0, ...

  3. binutils安装

    mkdir /tools/binutils -p //新建一个安装目录 .configure prefix=/tools/binutils make make install binutils工具就安 ...

  4. struts2 UI标签 和 主题

    四.Struts2的UI标签和主题 1.Struts2中UI标签的优势 自动的数据回显和错误提示功能 自带的简单样式和排版 2.表单标签的通用属性 说明:UI标签中value的取值一般都是字符串. 2 ...

  5. Day29--Python--缓冲区, 粘包

    tcp: 属于长连接,与一个客户端进行连接了以后,其他的客户端要等待.要想连接另外一个客户端,需要优雅地断开当前客户端的连接 允许地址重用:server.setsockopt(socket.SOL_S ...

  6. ES6学习:Map结构的目的和基本用法

    Map结构的目的和基本用法 JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键.这给它的使用带来了很大的限制.   1 2 3 4 5 6 7 8 ...

  7. websocket实现简单的通信

    websocket server端 #coding=utf8 #!/usr/bin/python import struct,socket import hashlib import threadin ...

  8. Spring Boot学习记录02_构建SpringBoot工程_通过idea构建

    1.通过idea新建工程 2.Initial Service Url指向的地址就是Spring官方提供的Spring Initializr工具地址 3.结合情况进行设置 4.这里我选择的版本是1.5. ...

  9. Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio”

      Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio” 作者:尹正杰 版权声明:原创作品,谢绝转载 ...

  10. jdk7 并行计算框架Fork/Join

    故名思义,拆分fork+合并join.jdk1.7整合Fork/Join,性能上有大大提升. 思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间.有点像,Map ...