前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >夯实Python基础(3)

夯实Python基础(3)

作者头像
高一峰
发布2020-09-22 09:58:04
4000
发布2020-09-22 09:58:04
举报
文章被收录于专栏:高渡号外高渡号外
夯实Python基础

三、列表

在《Python入门》相关课程中,我们学习Python的四大数据结构:列表、元组、字典和集合。其中,列表是最常用也最灵活的一种数据结构,我们对列表的概念和操作也有了基本的了解,今天,我们再来一起回顾一下这些最基本的基础知识,然后,我们再通过一个案例来看看列表在实际应用中到底如何运用?

(一)先复习一下

1、列表(list)的概念

Python的列表(list),是一种灵活的有序对象的集合。

1、列表可以包含任何种类的对象,甚至可以嵌套,一个列表中可以包含另一个列表作为其中一个对象。

2、列表包含的都是可变对象,支持实时修改(原处修改)。

3、列表可以根据需要增加,或减少。

4、借助列表,我们几乎可以通过脚本创造和处理任意复杂的数据信息。

列表极其重要,应用极为普遍。

2、如何创建一个列表

将用逗号分隔的对象置于一对方括号之中,就创建了一个列表。

>>> list1 = [1, 2, 3, 4, 5 ]

>>> list2 = ['a', 'b', 'c', 'd']

>>> list3 = [] #定义一个空列表

>>> list4 = [1,] #只有一个单项

PS:当一个列表赋值给一个变量名,本质上是在列表对象和变量名之间创建了一个引用。

3、访问列表中的值

(1)使用索引访问列表中的值

>>> list1 = ['a', 'b', 'c', 'd', 'e']

>>> list1[1]

'b'

(2)使用切片访问列表中的值

>>> list1 = ['a', 'b', 'c', 'd', 'e']

>>> print (list1[1:3])

>>> ['b', 'c',]

4、更新列表

(1)通过索引,直接为指定下标的项重新赋值。

(2)使用append()方法向列表的末尾追加新的项。

(3)使用del语句,通过索引删除指定下标的项。

>>> list1 = ['a', 'b', 'c', 'd', 'e']

>>> list1[3] = 'f'

>>> print(list1)

['a', 'b', 'c', 'f', 'e']

>>> list1.append('d')

>>> print(list1)

['a', 'b', 'c', 'f', 'e', 'd']

>>> del list1[2]

>>> print(list1)

['a', 'b', 'f', 'e', 'd']

5、列表的操作函数

>>> len(['a', 'b', 'c', 'd', 'e'])# 获取列表长度

5

>>> ['a', 'b', 'c', 'd', 'e'] + ['f', 'g', 'h']# 列表组合(相加)

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

>>> ['a', 'b', 'c'] * 2#列表重复

['a', 'b', 'c','a', 'b', 'c']

>>> 3 in [1,2,3] #in操作符,判断某元素是否存在

True

>>> for x in [1,2,3]#迭代(遍历)

1 2 3

>>> max([1,2,3,4,5])#获取列表的最大值

5

>>> min([1,2,3,4,5])#获取列表的最小值

1

>>> range(5)#创建一个连续整数的列表

[0,1,2,3,4]

PS:加号 + 两边必须都是列表,不可以把一个列表和一个字符串加在一起。

6、列表的操作方法

(1)、list.append(obj):在列表末尾添加新的对象。

(2)、list.count(obj):统计某个元素在列表中出现的次数。

(3)、list.index(obj):从列表中找出某个值第一个匹配项的索引位置。

(4)、list.insert(index, obj):将对象插入列表(指定索引位置的前面)。

(5)、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并返回该元素的值。

(6)、list.remove(obj):移除列表中某个值的第一个匹配项。

(7)、list.reverse():对原列表进行反向排列。

(8)、list.sort([func]):对原列表进行排序。

(9)、list.extend(seq):在列表末尾追加另一个序列中的值。

请注意,当追加一个字符串序列时的情形:

>>> [1,2,3].extend(‘xyz’)

[1,2,3,’x’,’y’,’z’]

(二)、案例应用

如下表,是某公司员工考核表

员工ID

工龄

薪级

出勤率

加班

业绩

1001

3

5

100

16

50000

1002

1

1

80

0

3000

1003

2

3

90

10

23000

1004

4

6

95

20

45000

1005

5

7

100

30

65000

在考核业绩,核算奖金的过程中,需要分别根据不同考核单项的权重,来计算最终业绩的奖金,计算规则如下(假定它是合理的):

员工奖金 = 业绩 * [(工龄数 /30) * 0.2 + (薪级 /12) * 0.3 + (出勤率/100) * 0.3 + (加班数/120) * 0.2] /10

那么,如果是使用Python开发的这样一个薪酬管理系统,我们遇到这个问题时,我们的Python程序应该如何处理这个数据,最快的计算出每一个员工的奖金呢?

面对这样的需求,作为程序员我们应该有如下的思考:

1、作为一个应用系统,我们写的程序不是要计算这5个人这一个月的奖金,而是,根据规则,能够用于计算每个月每个人的奖金。

2、一个人的完整信息足以计算出这个人的奖金额度,且每个人的算法相同,那么,只需要按照数据库里(销售)员工的总人数循环迭代,即可计算出所有人的奖金。

3、每一个人的完整数据信息,就构成一个列表,且不同的索引值,代表了一个单项的数据,可用于计算这个人的奖金。

# 第一步:读取数据库的数据

# 创建一个空列表,用于存放员工数据

user_info_table = []

# 读取数据,并追加到列表

user_info_table.append([1001,3,5,100,16,50000])

user_info_table.append([1002,1,1,80,0,3000])

user_info_table.append([1003,2,3,90,10,23000])

user_info_table.append([1004,4,6,95,20,45000])

user_info_table.append([1005,5,7,100,30,65000])

# 第二步:一个新列表,它的元素将由员工ID和奖金构成的元组来构成。

user_reward_list = []

# 第三步:循环迭代员工数据表,并计算每一个员工的奖金。

# 使用for循环迭代,遍历所有员工数据

for x in user_info_table:

user_id = x[0]#获取员工ID

reward = x[5] * [(x[1] /30) * 0.2 + (x[2] /12) * 0.3 + (x[3]/100) * 0.3 + (x[4]/120) * 0.2] /10#计算奖金

user_reward = (user_id,reward)#创建一个元组

user_reward_list.appned(user_reward)#将元组添加到列表

# 显示员工的奖金

>>> for x in user_reward_list: print(x)

(1001, 2358.50)

(1002, 81.5)

(1003, 862.43)

(1004, 2226.15)

(1005, 3627.00)]

怎么样?

一个看似复杂的问题,

当我们善用列表的时候,

数据的处理,

就变得很简单了!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档