列表特征

有序

编号,又名索引、下标,可以通过编号访问元素

可遍历

可追加/可插入

可删除/可以弹出

可修改

长度不定

列表定义

如,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 序列相关推荐

  1. python运维课程标准_Python运维初级课程

    随着信息时代的持续发展,IT 运维已经成为 IT 服务内涵中重要的组成部分.面对越来越复杂的业务以及日趋多样化的用户需求,不断扩展的 IT 应用需要合理的 IT 运维保障 IT 服务灵活便捷.安全稳定 ...

  2. python 多维数组去重_python多维数组运算-女性时尚流行美容健康娱乐mv-ida网

    自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...

  3. python运维面试题_PYTHON运维开发面试题整理

    1.请使用Linux系统命令统计出establish状态链接数有多少? netstat -an |grep ESTABLISHED |wc -l -a (all)显示所有选项,默认不显示LISTEN相 ...

  4. python开发运维工程师待遇_Python运维开发工程师薪资待遇如何

    2017年无疑是Python最火的一年.现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能.如果你不会开发,那么你就不能充分理解你们系统的业务流程,那么你就不能帮助调试和优化开发人开发的程序.那 ...

  5. python二维数组操作_Python二维数组应用与操作

    课课家将会在这里为大家详细的介绍一下Python二维数组的相关应用方法以及定义方式,相信朋友们可以从中学习到更多的知识. Python数组的应用中在实际编程中是一个非常重要的应用技术,作为Python ...

  6. 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  ...

  7. python二维高斯分布生成_python 多维高斯分布数据生成方式

    我就废话不多说了,直接上代码吧! import numpy as np import matplotlib.pyplot as plt def gen_clusters(): mean1 = [0,0 ...

  8. python 将二维数组旋转_python 二维数组90°旋转

    题目: 使用python生成一个4×4二维数组并将其顺时针旋转90° 源码如下:import random datarow=[] data=[] for i in range(4): for j in ...

  9. python课程设计矩阵对角线之和_Python二维数组实现求出3*3矩阵对角线元素的和示例...

    Python二维数组实现求出3*3矩阵对角线元素的和示例 题目:求一个3*3矩阵对角线元素之和. 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. def two_dime ...

最新文章

  1. php值传递和java_Java的值传递和引用传递
  2. oracle统计一个班男生女生,一条sql统计一个班级的男女人数
  3. 17_传智播客iOS视频教程_代码中的面向过程与面向对象以及优缺点分析
  4. Tensorflow 指令加速
  5. android 系统(154)----OTA制作及升级过程
  6. 拉拢苹果用户,谷歌推出“从 iOS 转移到 Android” App
  7. android的Service
  8. 统计字符串中个字符的个数
  9. go 排序sort的使用
  10. php yield 个人小解_PHP中的性能优化利器:生成器 yield 理解
  11. .net 导出excel_.NET Core一行代码导入导出Excel生成Word
  12. go语言应用知识:-1-输入项目信息,获取相应内容打印
  13. 安卓桌面软件哪个好_有哪些好用的手机记事本软件?安卓手机便签哪个好用?
  14. 高一计算机课程教案,高一信息技术复习课教案.doc
  15. Allegro 走高速线等长线时怎么画成椭圆的走线
  16. EXE捆绑机制作原理
  17. [易飞]关于自制件调整为虚设件的处理方案
  18. 阮一峰访谈问题有奖征集
  19. Word文档中实现:点击图片双击放大
  20. mybatis小问题记录下.update 更新数据nullpoint问题.

热门文章

  1. JSP程序开发学习笔记2
  2. Quartz CronTrigger时间最完整配置说明
  3. 不让html缓存图片吗,html – 如何强制Web浏览器不缓存图像
  4. APP价格标签页面设计灵感!明码标价!
  5. 新年到!充满年味的海报给你参考
  6. 设计灵感案例|教你图像在海报中可以如何摆放!
  7. UI设计干货素材|精美的APP UI Kit模板
  8. 蓝盾小火墙补丁_网络安全知识小科普
  9. python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界
  10. Spring 框架 IOC 与 DI 的总结