设为首页 收藏本站
查看: 1084|回复: 0

[经验分享] Python自动化开发学习2

[复制链接]

尚未签到

发表于 2018-8-11 06:10:11 | 显示全部楼层 |阅读模式
  列表和元祖
  列表取值和切片的演示:
strings = ['a','b','c','d','e','f','g']  
print(strings[0])  # 从0开始计数,所以第一个元素是0
  
print(strings[1:4])  # 切片,从起点开始,但是不包括终点
  
print(strings[4:])  # 缺省终点,则切到结尾
  
print(strings[:3])  # 也可以缺省起点,则从头开始
  
print(strings[::2])  #  所以头尾都省了,就是从头到尾。这里加上了步长,因为头尾步长3个参数都省了,那就是打印整个列表print(strings)
  
print(strings[0:5:2])  # 第三个参数是步长,默认1
  
print(strings[-2])  # 取倒数第2个
  
print(strings[-4:-2])  # 永远是从左往右取,所以-4放前面
  追加列表、插入列表、修改列表:
strings = ['a','b','c','d','e','f','g']  
strings.append('z')  # 在最后追加
  
print(strings)
  
strings.insert(1,'i1')  # 插到1的位置
  
print(strings)
  
strings[4] = 'D2'  # 修改
  
print(strings)
  删除列表:
strings = ['a','b','c','d','e','f','g']  
strings.remove('c')  # 不能删除不存在的成员
  
print(strings)
  
strings.pop()  # 缺省参数,删除最后一个
  
print(strings)
  
strings.pop(1)  # 如果带了参数,就是删除那一个
  
print(strings)
  
del strings[0]  # 也是不能删除不存在的。这里和带参数的pop是一样的
  
print(strings)
  查找元素:
strings = ['a','b','c','d','e','f','g']  
strings.append('e')
  
print(strings.count('e'))  # 返回列表中这个元素出现的次数
  
print(strings.index('e'))  # 返回列表中这个元素的位置。但是只有第一个匹配项。但是如果没找到会报错
  
print('f' in strings)  # in 和 not in之前已经学过了。可以做元素是否存在于列表中的判断
  
print('h' not in strings)
  反转、合并、排序,最后清空:
strings = ['a','b','c','d','e','f','g']  
print(strings)
  
strings.reverse()  # 反转列表
  
print(strings)
  
strings.extend(['2','!',"AA"])  # 合并列表,直接用+号结果也一样,但是+号有效率问题吧
  
print(strings)
  
strings.sort()  # 排序,元素不能混有数字和字符串,否则排序会报错。这里是2是字符
  
print(strings)  # 排序按ASCII码排,符号,数字,大写,小写。中文字符排最后
  
strings.clear()  # 清空列表
  
print(strings)
  列表的复制使用.copy()
  列表里的元素也可以是另一个列表,下面一起演示
strings = ['a','b','c','d','e','f','g']  
strings.insert(2,['A','B','C'])  # 插入一个元素,这个元素是另一个列表
  
strings2 = strings.copy()  # 复制列表
  
print(strings2)
  
strings[0] = 'apple'  # 修改原始表的元素
  
strings[2][1] = 'BOY'  # 2层列表中的元素是这样表示的
  
print(strings)
  
print(strings2)  # 注意1层元素没变,但是2层的元素也变了,虽然之前操作的原始表的元素
  列表里每个元素占一个空间,1层的元素这个空间存的就是值,copy的时候就是将这个值复制了。但是二层的情况,在一层的表里也只占1个元素的位置,这里存的值就是下面二层表的内存地址。所以无论在哪张list里修改2层的元素,两张表都会变化。
  列表使用赋值=和copy效果是不同的,使用=完全就是复制了内存地址,等于只是给这个列表起了一个别名
strings = ['a','b','c','d','e','f','g']  
strings3 = strings
  
print(strings3)
  
strings[0] = 'apple'  # 修改原始表的元素
  
print(strings)
  
print(strings3)  # 虽然没修改这张表,但是内容和原始表是一样的
  所以要向真正的复制一张表,需要import copy 这个模块
import copy  
strings = ['a','b','c','d','e','f','g']
  
strings.insert(2,['A','B','C'])  # 插入一个元素,这个元素是另一个列表
  
strings2 = copy.copy(strings)  # 和之前的复制列表一样
  
strings3 = copy.deepcopy(strings)  # 深copy,这个是我们需要的
  
print(strings2)
  
print(strings3)
  
strings[0] = 'apple'  # 修改原始表的元素
  
strings[2][1] = 'BOY'  # 修改2层里的元素
  
print(strings)
  
print(strings2)  # 1层没变,2层还是被修改了
  
print(strings3)  # 这里的元素完全不受原始表变化的影响
  元组和列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
  元组只有count和index这2个方法。
strings1 = ['a','b','c','d','e','f','g']  # 这个是列表list  
strings2 = ('a','b','c','d','e','f','g')  # 这个是元祖tuple
  
print(type(strings1),type(strings2))
  
print(strings1)
  
print(strings2)
  可以把那种不希望被修改的数据,比如常量、比如连接参数,存放在元组里
  enumerate()函数
  可以方便的一次获得元素的下标和值,比较实用
strings = ['a','b','c','d']  
# 下标和值构成了一个元组
  
for i in enumerate(strings):
  
    print(i)
  
print('******')
  
# 这样写,就依次输出了下标和值,而不是以元组的形式出现了
  
for i,j in enumerate(strings):
  
    print(i,j)
  
print('******')
  
# 应用的时候还是用index和item,这样意义比较明确。另外可以带上一个参数,指定下标的起始值
  
for index,item in enumerate(strings,1):
  
    print(index,item)
  字符串操作
  自动填充的函数有点用处,先记一下。否则在需要用的时候很有可能要手动填充。
string = "hello"  
print(string.center(10,'='))  # 内容在中间,两边填充
  
print(string.ljust(10,'='))  # 内容在左边,右边填充
  
print(string.rjust(10,'='))  # 内容在右边,左边填充
  参数1定义了字符串的长度,不足就用参数2的字符填充。
  字典
  字典是key:value的数据类型

  •   字典是无序的
  •   key必须唯一
# 创建字典  
dic1 = {}  # 创建一个空的字典
  
dic2 = {'name':'Bob',
  
        'job':'engineer',
  
        'gender':'male'}
  
print(dic1,dic2)
  修改和增加
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
dic2['class'] = 'First'  # 如果key不存在,则增减
  
dic2['job'] = 'teacher'  # 如果key存在,则修改
  
print(dic2)
  还有一种增加的方法,setdefault,注意下面的参数中间使用的是逗号。只会新增没有的key,不会修改已有的key
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
dic2.setdefault('name','Tom')  # 最后结果,name并不会被修改
  
dic2.setdefault('class','First')  # 最后结果,增加了class这项
  
print(dic2)
  删除:删除字典内的元素推荐2中方法:
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
dic2.pop('gender')
  
del dic2['job']
  
print(dic2)
  查找也给了2个方法,推荐用get
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
print('job' in dic2)  # 返回True,返回字典里是否有这个key
  
print(dic2['job'])  # 返回key的值(Value)。如果key不存在则会报错
  
print(dic2.get('name'))  # 如果key存在,返回值
  
print(dic2.get('name2'))  # 如果key不存在,返回None
  可以列出所有的key或所有的value
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
print(dic2.values())
  
print(dic2.keys())
  还可以把字典转成列表
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
print(dic2.items())
  update,合并更新字典。把参数中的表合并更新到前面的表。没有的key会新增,已有的key和做修改
dic2 = {'name':'Bob',  
        'job':'engineer',
  
        'gender':'male'}
  
dic3 = {'job':'teacher',
  
        'class':'First'}
  
print(dic2)
  
print(dic3)
  
dic2.update(dic3)
  
print(dic2)
  
print(dic3)
  字典初始化:第一个参数是字典的所有的key,第二个参数是所有value的默认值。这里第二个参数不要再嵌套元组或列表这类数据类型,否则默认赋的值将会是这个列表或元素的内存地址,导致所有的value都是关联的同一个值
dictmp = {}  
dic = dictmp.fromkeys(['name','job','gender'],'N/A')
  
print(dic)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-549789-1-1.html 上篇帖子: 《可爱的Python》读书笔记(五) 下篇帖子: Python的流程控制 - for序列
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表