python运维处理序列_Python运维开发:02 序列
列表特征
有序
编号,又名索引、下标,可以通过编号访问元素
可遍历
可追加/可插入
可删除/可以弹出
可修改
长度不定
列表定义
如,nums = [1, 2, 3, 4, 5]
使用中括号包含
每个元素之间使用逗号分隔
可包含任意数据类型,如[1 ,2 , 3, 4, 5] 、[1, 'abc', True, False]
访问与修改列表
访问
列表是有序的数据集,通过列表名[索引]的方式访问列表中的元素
索引编号
1)从左向右依次为 0, 1, 2, 3, ... n -1
2)从右向左依次为 -1, -2, -3, ..., -n
3)访问元素的索引必须存在,否则报错
>>> l = [1, 2, 3, 4]
>>> l[0]
1
>>> l[3]
4
元素修改
1)通过直接给列表名[索引]修改对应索引位置的值
2)修改元素的索引必须存在,否则报错
>>> l[1] = 'abc'
>>> l
[1, 'abc', 3, 4]
>>> l[6] = '88'
Traceback (most recent call last):
File "", line 1, in
IndexError: list assignment index out of range
遍历列表
使用for访问列表中所有的元素
>>> nums = [1, 2, 3, 4]
>>> for num in nums:
... print(num)
...
1
2
3
4
类型转换
1)可以通过函数list将其他可遍历的类型转化为列表
>>> list('abcde')
['a', 'b', 'c', 'd', 'e']
2)使用range函数快速创建序列
range(end) 创建从 0到end-1 的连续整数组成的序列
range(start, end) 创建从 start到 end-1 的连续整数组成的序列
range(start, end, step) 创建从 start 到 end-1 的每隔step个整数组成的序列
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(0, 10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(2,10))
[2, 3, 4, 5, 6, 7, 8, 9]
None类型
>>> a = None
>>> a
>>> b = 1
>>> b
1
>>> type(b)
>>> type(a)
>>> print(a)
None
>>>
>>> a is None
True
>>> a is not None
False
>>> b is not None
True
列表常见操作
len 获取list元素的数量
max 获取list中元素最大值
min 获取list中元素最小值
判断元素是否在list中存储
>>> nums = [1, 2, 3, 4]
>>> len(nums)
4
>>> max(nums)
4
>>> min(nums)
1
>>> 1 in nums
True
>>> 2 not in nums
False
删除列表中元素
根据索引删除list中对应元素
>>> del nums[0]
>>> nums
[2, 3, 4]
列表运算
加(+):必须是两个list相加,相当于2个list拼接合并
乘(*):必须一个为整数,相当于将list 重复 n 次
>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
列表函数
append 添加元素到list最右侧
clear 清空list中的元素
copy 复制list中的所有元素到新list中并返回
count 计算list中存在相同元素的数量
extend 将一个可遍历数据中的所有元素追加到list后
index 获取元素在list中的位置
insert 在list指定位置添加元素
pop 弹出list中指定位置的元素(默认最右侧)
remove 移除list中指定的元素
reverse对list中元素进行反转
sort 对list中元素进行排序
元组函数
count 计算tuple中存在相同元素的数量
index 获取元素在tuple中的位置
练习题】
1、找出 nums=[6, 11, 7, 9, 4, 2, 1]中最大的数字
#!/bin/bin/env python
# -*- coding: utf-8 -*-
# __auhtor__: will_xue
# Date: 2018-12-23
# Email: xuegqcto@aliyun.com
#!/bin/bin/env python
# -*- coding: utf-8 -*-
# __auhtor__: will_xue
# Date: 2018-12-23
# Email: xuegqcto@aliyun.com
# 找出 nums=[6, 11, 7, 9, 4, 2, 1]中最大的数字
'''
nums = [6, 11, 7, 9, 4, 2, 1]
max = nums[0]
for num in nums:
if num > max:
max = num
print('最大数是:', max)
#=================================================
# 写法二,使用了 list.index()方法,列表赋值给max
max = 0
for x in nums:
if x > max:
i = nums.index(x)
max = nums[i]
print('最大数是:', max)
#=================================================
'''
nums = [-1, -9, -7, -6, -10, -11]
max = None
for num in nums:
if max is None:
max = num
elif num > max:
max = num
print('最大数是:', max)
2、移动nums中最大的数字到最后
提示:
从右到左依次两两比较,如果前面比后面大,则交换位置
第1次: 6,11比较,前面小,不交换[6, 11, 7, 9, 4, 2, 1]
第2次: 11, 7比较,前面大,交换[6, 7, 11, 9, 4, 2, 1]
第3次: 11, 9比较,前面大,交换[6, 7, 9, 11, 4, 2, 1]
第4次: 11, 4比较,前面大,交换[6, 7, 9, 4, 11, 2, 1]
第5次: 11, 2比较,前面大,交换[6, 7, 9, 4, 2, 11, 1]
第6次: 11, 1比较,前面大,交换[6, 7, 9, 4, 2, 1, 11]
交换元素
tmp = a; a=b; b = tmp;
a, b = b, a
3、Todolist
提示用户输入do或者任务(非do)
如果用户输入任务,则添加到list中
如果用户输入do,当任务为空时则打印无任务并退出,否则从list中根据先进先出原则打印任务
4、获取两个list中相同的元素到第三个列表中
nums_1 = [1, 2, 3, 4, 5, 3, 10, 11]
nums_2 = [1, 2, 3, 1, 4, 5, 5, 3, 12, 34]
#!/bin/bin/env python
# -*- coding: utf-8 -*-
# __auhtor__: will_xue
# Date: 2018-12-23
# Email: xuegqcto@aliyun.com
'''
获取两个list中相同的元素到第三个列表中
nums_1 = [1, 2, 3, 4, 5, 3, 10, 11]
nums_2 = [1, 2, 3, 1, 4, 5, 5, 3, 12, 34]
'''
nums_1 = [1, 2, 3, 4, 5, 3, 10, 11]
nums_2 = [1, 2, 3, 1, 4, 5, 5, 3, 12, 34]
nums_3 = []
for num in nums_1:
if (num in nums_2) and (num not in nums_3):
nums_3.append(num)
print(nums_3)
结果:
[1, 2, 3, 4, 5]
5、保证第二个练习中第三个列表中元素不重复
6、用户管理
让用户在控制台上输入”find/list/add/delete/update/exit”格式字符串
如果输入add,则让用户继续输入用户名、年龄、联系方式等数据, 将用户数据(用户名, 年龄,联系方式),放入list中存储,在放入list之前检查用户名不重复,如果重复,则提示用户已存在
如果输入delete,则让用户输入”用户名”字符串,根据用户名查找list中数据,若存在数据则将该数据移除,若用户数据不存在,则提示不存在
7、用户管理
如果输入update,则让用户分别输入用户名、年龄、联系方式等数据,根据用户名查找list中数据,若存在数据则将改数据更新为新的(用户名, 年龄,联系方式),若用户数据不存在,则提示不存在
如果用户输入find,则让用户输入”用户名” ,根据用户名查找list中数据用户名等于字符串的用户信息,并打印
如果用户输入list,则打印所有用户信息
打印用户第一个行数据为用户信息描述,从第二行开始为用户数据
如果用户输入exit,则打印退出程序,并退出
【作业】
1、插入排序
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Auth : xuegqcto@aliyun.com
# 定义一个列表
nums = [11, 9, 22, 5, 30, 28, 15]
# 第一层for 循环用于控制 len(nums)次
for num in nums:
# 第二次for 循环用于前后比较,最终将列表最大值放到列表的最后。
# 循环len(nums)次,将变为有顺序的列表
for i in range(len(nums)-1):
if nums[i] > nums[i+1]:
nums[i],nums[i+1] = nums[i+1], nums[i]
print(nums)
2、二分查找
提示:mid = (high + low) / 2
mid为索引
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Auth : xuegqcto@aliyun.com
'''
描述:二分查找又称折半查找,它是一种效率较高的查找方法。
二分查找要求:
(1)必须采用顺序存储结构
(2).必须按关键字大小有序排列
查找过程
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,
如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,
如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
推理示例:
35
1 04950
2 25 4924
3 25 3637
4 31 3630
5 34 3633
'''
# 初始化一个有序列表
nums = list(range(0, 101))
print(nums)
# 计数
count = 0
# 定义索引
idx_min = 0
idx_max = len(nums)-1
txt = input('请输入数字: ')
txt_int = int(txt)
print(idx_min, idx_max)
while idx_min <= idx_max:
count += 1
mid = (idx_min + idx_max) // 2
if txt_int > nums[mid]:
idx_min = mid + 1
elif txt_int < nums[mid]:
idx_max = mid -1
else:
print('恭喜,猜对了', txt_int)
break
# 格式化输出,便于理解每次比对情况
print('第{0}次, idx_min:{1}, mdx_max:{2},mid:{3}'.format(count, idx_min, idx_max, mid))
结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
请输入数字: 35
0 100
第1次, idx_min:0, mdx_max:49,mid:50
第2次, idx_min:25, mdx_max:49,mid:24
第3次, idx_min:25, mdx_max:36,mid:37
第4次, idx_min:31, mdx_max:36,mid:30
第5次, idx_min:34, mdx_max:36,mid:33
恭喜,猜对了 35
Process finished with exit code 0
python运维处理序列_Python运维开发:02 序列相关推荐
- python运维课程标准_Python运维初级课程
随着信息时代的持续发展,IT 运维已经成为 IT 服务内涵中重要的组成部分.面对越来越复杂的业务以及日趋多样化的用户需求,不断扩展的 IT 应用需要合理的 IT 运维保障 IT 服务灵活便捷.安全稳定 ...
- python 多维数组去重_python多维数组运算-女性时尚流行美容健康娱乐mv-ida网
自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...
- python运维面试题_PYTHON运维开发面试题整理
1.请使用Linux系统命令统计出establish状态链接数有多少? netstat -an |grep ESTABLISHED |wc -l -a (all)显示所有选项,默认不显示LISTEN相 ...
- python开发运维工程师待遇_Python运维开发工程师薪资待遇如何
2017年无疑是Python最火的一年.现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能.如果你不会开发,那么你就不能充分理解你们系统的业务流程,那么你就不能帮助调试和优化开发人开发的程序.那 ...
- python二维数组操作_Python二维数组应用与操作
课课家将会在这里为大家详细的介绍一下Python二维数组的相关应用方法以及定义方式,相信朋友们可以从中学习到更多的知识. Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python ...
- python多维字符数组_python多维数组内找指定字符串
li=[['a','b',['t', 'c'],'d'],['e','f','g','h']] def a(l, c, ar = []): t = 0 arr = [] for i in l: if ...
- python二维高斯分布生成_python 多维高斯分布数据生成方式
我就废话不多说了,直接上代码吧! import numpy as np import matplotlib.pyplot as plt def gen_clusters(): mean1 = [0,0 ...
- python 将二维数组旋转_python 二维数组90°旋转
题目: 使用python生成一个4×4二维数组并将其顺时针旋转90° 源码如下:import random datarow=[] data=[] for i in range(4): for j in ...
- python课程设计矩阵对角线之和_Python二维数组实现求出3*3矩阵对角线元素的和示例...
Python二维数组实现求出3*3矩阵对角线元素的和示例 题目:求一个3*3矩阵对角线元素之和. 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. def two_dime ...
最新文章
- php值传递和java_Java的值传递和引用传递
- oracle统计一个班男生女生,一条sql统计一个班级的男女人数
- 17_传智播客iOS视频教程_代码中的面向过程与面向对象以及优缺点分析
- Tensorflow 指令加速
- android 系统(154)----OTA制作及升级过程
- 拉拢苹果用户,谷歌推出“从 iOS 转移到 Android” App
- android的Service
- 统计字符串中个字符的个数
- go 排序sort的使用
- php yield 个人小解_PHP中的性能优化利器:生成器 yield 理解
- .net 导出excel_.NET Core一行代码导入导出Excel生成Word
- go语言应用知识:-1-输入项目信息,获取相应内容打印
- 安卓桌面软件哪个好_有哪些好用的手机记事本软件?安卓手机便签哪个好用?
- 高一计算机课程教案,高一信息技术复习课教案.doc
- Allegro 走高速线等长线时怎么画成椭圆的走线
- EXE捆绑机制作原理
- [易飞]关于自制件调整为虚设件的处理方案
- 阮一峰访谈问题有奖征集
- Word文档中实现:点击图片双击放大
- mybatis小问题记录下.update 更新数据nullpoint问题.