前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的数据处理(列表)——(二)

Python中的数据处理(列表)——(二)

作者头像
Gorit
发布2021-12-09 15:29:58
1.3K0
发布2021-12-09 15:29:58
举报
文章被收录于专栏:Gorit 带你学全栈系列

上次讲了Python数据处理中元组的一些使用方法

这次就讲讲列表和 列表 的使用:

本次的内容:

目录

二、列表

Q1:上次留了一个问题,那就是元组中的数据是不可变的,那么列表中的元素可以改变吗?

Q2:那么我们改如何通过列表来更改数据呢?

Q3: 我们发现这样改变列表中的数值对列表中的实际数据没有任何关系,这里的x是一个独立变量,每次循环都会取一个新值,但是我们如何才可以改变实际数据中的值呢 ?

Q4:enumerate 的魔力能改变列表中数据的值,但是有的时候我们遇到一串比较杂乱无序的数据,我们有什么比较快速的方法可以改变数据中的顺序,也就是给一串杂乱的数据进行排序呢?

Q5:既然Python能给我们把数字排好序,那么字符也能不能像数字那样排好序呢?

Q5.1 但是有时我们只要临时修改以下排列的顺序,要该怎么做呢?

Q5.2 反向打印

Q6 :讲了这么多,我们没还没讨论增加,删除元素嘞!

Q7:但是前面两种插入的方法还是有局限性,当我们需要随意插入元素的时候,又该怎么办呢?

Q8: 有了添加也有删除

关于列表的小总结

二、列表

Q1:上次留了一个问题,那就是元组中的数据是不可变的,那么列表中的元素可以改变吗?

 我们先看看列表的样子

代码语言:javascript
复制
list = [1,'2','a',3,'哈喽']
print(list)

它的定义和元组 一样,只不过它用的是方括号,打印出来的也是整个列表,列表也可以理解为数组

列表里面很多功能和元组 相似,我就不一一列举了,列表和元组的不同点是,列表可以更改 数据,这样我们 就可以结局Q1中的问题,我们就可以解决了。

代码语言:javascript
复制
#这里我列举了部分示例代码,有兴趣的读者可以自己复制下来试试
list = [11,22,33,44,55,66,77,88,99]

print('打印第一个元素')
print(list[0])

for x in list:
    print(x)

print('打印后三个元素')
for x in list[-3:]:
    print(x)

其实列表还有个功能,我们可以 在一个列表里面再嵌套一个列表,当然元组也是支持这么操作的。

代码语言:javascript
复制
mylist = [[1,2,33],['大大',1,'da']]
print(mylist[0][2])#仔细观察的人能发现,这个式子打印的是第一个小列表中的第三个元素,也就是33
print(mylist[1][0])#打印大大
print(mylist[0][1])#打印 2

 Q2:那么我们改如何通过列表来更改数据呢?

 我最先想到的是,先定义一个列表,然后for 循环遍历里面的每一个元素,最后再输出的时候,把列表里的值改一下,我们看看这段代码。为了检验列表最终是否改变了,我再整体打印一遍列表中的值

代码语言:javascript
复制
list = [1,2,3,4,5]

for x in list:
    x = x*2
    print(x)

print(list)

 程序的结果却是,它“改变”是“ 改变”了,也只是在循环里面,把列表里的每个值乘了2,实际上list 中的值并没有改变

程序运行结果

Q3: 我们发现这样改变列表中的数值对列表中的实际数据没有任何关系,这里的x是一个独立变量,每次循环都会取一个新值,但是我们如何才可以改变实际数据中的值呢 ?

 Python 中提供 enumerate 函数正好适用这样的情况

接下来就看看这个程序

代码语言:javascript
复制
list = [1,2,3,4,5]
for counter, x in enumerate(list):#counter 是我们定义循环中的另一个变量,用来跟踪我们在列表中的位置
    print("counter is",counter)
    print("x is",x)
    list[counter]= x*2#这一行实现了加倍魔法,并将结果返回到了list里

print(list)

 这样程序就如我们预期的那样运行

Q4:enumerate 的魔力能改变列表中数据的值,但是有的时候我们遇到一串比较杂乱无序的数据,我们有什么比较快速的方法可以改变数据中的顺序,也就是给一串杂乱的数据进行排序呢?

 我们先看一个乱序的列表数据

代码语言:javascript
复制
list = [1,22,3,6,333,2]

 这一串数据虽然看起来比较少,我能一眼看出来,但是以后有数以千计甚至上万级别的数据量给我们排序,我们就束手无策了。其实Python中排序用到 .sort(),看下面的代码

代码语言:javascript
复制
print(list)
list.sort()

for x in list:
    print(x)

  程序的运行结果如下

这样Python就给我们排好序了

Q5:既然Python能给我们把数字排好序,那么字符也能不能像数字那样排好序呢?

 我们先定义一个字符列表,并将它们进行排序,并看看程序的运行结果是什么样的

代码语言:javascript
复制
mylist = ['my','name','is','Gorit']
print(mylist)
mylist.sort()

for x in mylist:
    print

程序的 第一行是我们想要的结果,然而后面打印的结果却和我们想象的截然相反,经过多次尝试,我们可以发现,大写字母的 优先级总是高于小写字母,但是我们可以在.sort()代码中增加参数 key = str.lower,如下代码

代码语言:javascript
复制
mylist.sort(key = str.lower)#我们增加的这样的参数,是为了进行大小写不敏感的排序

sort 能够永久性的更改列表中的元素位置,但是如果我们想要与字母顺序相反的顺序进行排列元素,因此我们可以这么做,给sort 传递以下参数

代码语言:javascript
复制
mylist.sort(reverse = True)

Q5.1 但是有时我们只要临时修改以下排列的顺序,要该怎么做呢?

  这个时候我们可以用 sorted()函数对列表进行临时排序,看下面这个程序

代码语言:javascript
复制
mylist = ['coco','ada','pdick','doof']
print(sorted(mylist))#临时排序

print(mylist)

同理,如果你要反顺序打印,也可以用上面的方法

Q5.2 反向打印

代码语言:javascript
复制
mylist = ['coco','ada','pdick','doof']
mylist.reverse()

print(mylist)

Q6 :讲了这么多,我们没还没讨论增加,删除元素嘞!

 其实Python中增添用.append(参数) 函数就可以了

下面看看这段代码

代码语言:javascript
复制
list = [1,2,3,4,5,6]
list.append(7)#将7添加到;列表末尾
list.append([21,3,2])#也可以加入子列表

第三个代码加入的是子代码,但是添加的确是子列表, 而且append使用也有限制,一次只能增加一个数据。

于是就有了.extend()函数,它是让你先定义一个列表,然后再用 extend函数  调用我们定义的列表,然后将其加到我们想要加到的列表里,下面这段代码告诉了我们这个函数的用法

代码语言:javascript
复制
list = [1,2,3,4,5,6]
list1 = [11,22,33,44,'啊']
list.extend(list1)
print(list)

这样程序就能如我们的预期那样,把两个列表合并了

Q7:但是前面两种插入的方法还是有局限性,当我们需要随意插入元素的时候,又该怎么办呢?

 Python中提供了 insert 函数 供我们在任意位置插入一个元素,它的用法如下

代码语言:javascript
复制
list = [1,2,3,4,5,6]
print(list)
list.insert(0,'ada')#前者代表表中的位置,也就是要插入元素的下标,后者代表要插入的元素
print(list)

运行结果

 Q8: 有了添加也有删除

 删除操作用.remove()

代码语言:javascript
复制
list = [1,2,3,4,5,6]
list.remove(4)#遍历列表中的所有值,删除第一个出现的元素

删除列表中的多次出现的元素,只能用循环了

代码语言:javascript
复制
#删除多次重复的数据
mylist = [500,12,2,3,500,500,6,54,500]
for x in range(0,mylist.count(500)):#count是得到多少个出现的count的值,然后根据循环进行删除
    mylist.remove(500)#删除包含500 的元素

print(mylist)

关于列表的小总结

代码语言:javascript
复制
//创建列表
>>> cast=["class","palin","jones","idle"]
>>> print(cast)
['class', 'palin', 'jones', 'idle']
>>> print(cast[1])
palin

//append可以在末尾增加一个数据项
>>> cast.append("Gillam")
>>> print(cast)
['class', 'palin', 'jones', 'idle', 'Gillam']

//pop()删除末尾的一个数据项
>>> cast.pop()
'Gillam'
>>> print(cast)
['class', 'palin', 'jones', 'idle']

//extend可以之末尾增加一个数据项集合
>>> cast.extend(["Gillam","chamion"])
>>> print(cast)
['class', 'palin', 'jones', 'idle', 'Gillam', 'chamion']


//remove 可以删除一个指定项
>>> cast.remove("chamion")
>>> print(cast)
['class', 'palin', 'jones', 'idle', 'Gillam']

//使用insert可以在特定的位置插入一个制定项
>>> cast.insert(2,"chamion")
>>> print(cast)
['class', 'palin', 'chamion', 'jones', 'idle', 'Gillam']
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/01/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本次的内容:
  • 二、列表
    • Q5.1 但是有时我们只要临时修改以下排列的顺序,要该怎么做呢?
      • Q5.2 反向打印
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档