盘点一个列表处理基础问题(四种方法),最后两种最惊艳!

本文介绍了如何将一个包含元组的列表拆分为两个独立的列表,提供了四种不同的实现方法,包括常规解法、解包方式、使用pandas和numpy。通过实例展示了每种方法的代码和运行结果,适合Python初学者和进阶者学习。
摘要由CSDN通过智能技术生成

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

渡远荆门外,来从楚国游。

大家好,我是Python进阶者。

本文赠送《轻松学Python》纸质书,活动参与方式见文末。

一、前言

昨天在Python最强王者群有个叫【老松鼠】的粉丝问了一道关于列表处理的问题,如下图所示。

a12ce831e93c3b709b0dc952c2546ad4.png

原文本如下所示:

[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]

把这个列表分拆成两个单独的列表。

二、实现过程

这里一共四个方法,欢迎继续尝试!

方法一

这里我自己给了一个常规思路解法,将列表强行拆解为两个列表。

# coding:utf-8

# @Time : 2022/5/6 11:46
# @Author: 皮皮
# @公众号: Python共享之家
# @website : http://pdcfighting.com/
# @File : 字符串.py
# @Software: PyCharm
letter_list = []
num_list = []
list1 = [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
for i in list1:
    letter_list.append(i[0])
    num_list.append(i[1])
print(letter_list)
print(num_list)

这个代码亲测好使,运行之后结果如下。

ac53c1e1c57bdfd24a22f9332da520fc.png
方法二

这里【月神】给了一份代码,使用解包的方式进行实现:

list1 = [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]

list_result = tuple(zip(*list1))
letter_list = list(list_result[0])
num_list = list(list_result[1])
print(letter_list)
print(num_list)

代码运行之后,结果如下图所示:

7104c5117d8c8c9ab806a4c98f954fd6.png

当然解包也可以写成比较简洁的形式,如下所示:

letter_list, num_list = zip(*list1)
print(letter_list)
print(num_list)

同样可以得到结果,如下图所示:d5203e0663789a81426e2df32ba441da.png

方法三

这里【瑜亮老师】给了一份代码,使用pandas进行实现,有些杀猪用牛刀的感觉了。

import pandas as pd
list1 = [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
df = pd.DataFrame(list1)
print(df[0].tolist())
print(df[1].tolist())

但是确实可行,运行结果如下图所示:b53616210f39caf60a66b8da8b62b08b.png

方法四

这里【月神】又给了一份代码,使用numpy进行实现,也有些杀猪用牛刀的感觉了。

import numpy as np
list1 = [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
letter_list, num_list = np.array(list1).T.tolist()
print(letter_list)
print(num_list)

结果如下图所示:

e1b6ed07e368584154b6eb9d40c05862.png

三、总结

大家好,我是Python进阶者。这篇文章主要盘点一个列表处理基础问题,文中给出了四个方法,思路基本上都是一致的,如果你还有其他方法,也欢迎大家积极尝试,一起学习,记得分享给我哦。

最后感谢粉丝【老松鼠】提问,感谢【dcpeng】、【月神】、【瑜亮老师】在运行过程中给出的思路和代码,感谢粉丝【冷喵】、【Chloe】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

a1855367d77d5be8609468f82f3b0a01.png

 
 

如果喜欢本文

 
 

欢迎 在看留言分享至朋友圈 三连

 
 

赠书

 
 
 
 
 
 
《轻松学Python》旨在帮助读者实现以下目标:
全面了解编程以及Python的基础知识
运用Python核心概念来创建程序和解决问题
在完成趣味性谜题和活动的同时,培养算法思维和编程技能
运用Turtle、Tkinter和Pygame来做迷你项目和综合性的大项目
按以下方式和公众号互动,即有机会获赠以上一本图书!
活动方式:在公众号后台回复"送书"参与活动,届时会在参与的小伙伴中抽取1名幸运鹅!

    活动时间:截至5月11日20点(周三)开奖,不见不散。
    快快拉上你的小伙伴参与进来吧~
让我知道你在看

------------------- End -------------------

往期精彩文章推荐:

cec6c71e2a2ed02fd1121ac80038b626.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值