失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python运维处理序列_Python运维开发:02 序列

python运维处理序列_Python运维开发:02 序列

时间:2021-07-30 20:02:10

相关推荐

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: -12-23

# Email: xuegqcto@

#!/bin/bin/env python

# -*- coding: utf-8 -*-

# __auhtor__: will_xue

# Date: -12-23

# Email: xuegqcto@

# 找出 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: -12-23

# Email: xuegqcto@

'''

获取两个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@

# 定义一个列表

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@

'''

描述:二分查找又称折半查找,它是一种效率较高的查找方法。

二分查找要求:

(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 序列》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。