11个Python循环技巧
本文分享自华为云社区《Python中的循环技巧指南》,作者:柠檬味拥抱。
当我们处理数据时,有时候需要创建多个列表以存储不同类型或不同条件下的数据。在Python中,我们可以利用循环来快速、高效地创建这些列表。本文将介绍如何使用循环在Python中创建多个列表,并提供代码实例。
python用循环新建多个列表
在Python中,我们可以使用列表推导式或循环结合条件语句来创建多个列表。下面是一些常见的场景和对应的代码示例:
1. 创建固定数量的空列表
假设我们需要创建多个空列表,可以使用列表推导式和循环:
# 使用列表推导式创建多个空列表 num_lists = 5 empty_lists = [[] for _ in range(num_lists)] print(empty_lists)
这将创建一个包含5个空列表的列表。
2. 根据条件创建多个列表
有时候,我们需要根据特定条件创建不同的列表。例如,我们想将奇数和偶数分别存储在两个列表中:
# 创建奇数和偶数列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_numbers = [] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) else: odd_numbers.append(num) print("奇数列表:", odd_numbers) print("偶数列表:", even_numbers)
这将根据数字的奇偶性创建两个列表。
3. 根据字符串长度创建多个列表
有时候,我们需要根据字符串的长度来将字符串分类并存储在不同的列表中:
# 根据字符串长度创建多个列表 words = ["apple", "banana", "orange", "pear", "grape", "kiwi"] short_words = [] medium_words = [] long_words = [] for word in words: if len(word) < 5: short_words.append(word) elif len(word) < 7: medium_words.append(word) else: long_words.append(word) print("短单词列表:", short_words) print("中等长度单词列表:", medium_words) print("长单词列表:", long_words)
这将根据字符串的长度将单词分别存储在三个不同的列表中。
4. 根据数据类型创建多个列表
有时候,我们需要根据数据的类型将其存储在不同的列表中。例如,我们想将整数、浮点数和字符串分别存储在不同的列表中:
# 根据数据类型创建多个列表 data = [1, 2.5, "apple", 4, "banana", 6.7, "orange", 8, 9, "pear"] integers = [] floats = [] strings = [] for item in data: if isinstance(item, int): integers.append(item) elif isinstance(item, float): floats.append(item) elif isinstance(item, str): strings.append(item) print("整数列表:", integers) print("浮点数列表:", floats) print("字符串列表:", strings)
这将根据数据的类型将其存储在三个不同的列表中。
5. 根据条件动态创建多个列表
有时候,我们需要根据动态变化的条件来创建多个列表。例如,我们想根据用户输入的数量创建相应数量的列表:
# 根据用户输入动态创建多个列表 num_lists = int(input("请输入要创建的列表数量: ")) lists = [[] for _ in range(num_lists)] print("已创建", num_lists, "个空列表:", lists)
这将根据用户输入的数量动态创建相应数量的空列表。
6. 创建包含特定范围的数字的多个列表
有时候,我们需要根据特定范围的数字来创建多个列表。例如,我们想要将0到9之间的数字按照个位数分别存储在十个列表中:
# 创建包含特定范围的数字的多个列表 num_lists = 10 range_lists = [[] for _ in range(num_lists)] for num in range(10): range_lists[num % num_lists].append(num) print("按照个位数存储的列表:") for i, lst in enumerate(range_lists): print(f"列表{i}:", lst)
这将按照个位数将0到9之间的数字分别存储在十个列表中。
7. 根据键的哈希值创建多个列表
有时候,我们想根据键的哈希值将数据分组存储在多个列表中。例如,我们有一组键值对,我们想根据键的哈希值将其存储在不同的列表中:
# 根据键的哈希值创建多个列表 data = {"apple": 3, "banana": 5, "orange": 2, "pear": 4, "grape": 6} num_lists = 3 hash_lists = [[] for _ in range(num_lists)] for key, value in data.items(): hash_index = hash(key) % num_lists hash_lists[hash_index].append((key, value)) print("根据键的哈希值存储的列表:") for i, lst in enumerate(hash_lists): print(f"列表{i}:", lst)
这将根据键的哈希值将键值对存储在三个不同的列表中。
8. 根据列表中元素的属性创建多个列表
有时候,我们需要根据列表中元素的属性值来创建多个列表。例如,假设我们有一组学生对象,我们想根据他们的成绩将他们分别存储在及格和不及格的两个列表中:
# 根据学生对象的成绩创建多个列表 class Student: def __init__(self, name, score): self.name = name self.score = score students = [ Student("Alice", 85), Student("Bob", 60), Student("Charlie", 75), Student("David", 40), Student("Emma", 95) ] passing_students = [] failing_students = [] for student in students: if student.score >= 60: passing_students.append(student) else: failing_students.append(student) print("及格学生列表:") for student in passing_students: print(f"{student.name}: {student.score}") print("\n不及格学生列表:") for student in failing_students: print(f"{student.name}: {student.score}")
这将根据学生对象的成绩将学生分别存储在及格和不及格的两个列表中。
9. 根据索引范围创建多个列表
有时候,我们需要根据索引范围将列表切分成多个子列表。例如,我们有一个包含一组数字的列表,我们想将其分割成若干个小的子列表:
# 根据索引范围创建多个列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num_lists = 3 split_lists = [] for i in range(num_lists): start_index = i * len(numbers) // num_lists end_index = (i + 1) * len(numbers) // num_lists split_lists.append(numbers[start_index:end_index]) print("切分后的列表:") for i, lst in enumerate(split_lists): print(f"列表{i + 1}:", lst)
这将根据索引范围将原始列表切分成三个子列表。
10. 根据列表元素的值进行分组创建多个列表
有时候,我们需要根据列表元素的值进行分组,并将它们存储在不同的列表中。例如,假设我们有一组整数,我们想根据它们的奇偶性将它们分别存储在两个列表中:
# 根据列表元素的值进行分组创建多个列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_numbers = [] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) else: odd_numbers.append(num) print("奇数列表:", odd_numbers) print("偶数列表:", even_numbers)
这将根据列表元素的奇偶性将其分别存储在奇数和偶数列表中。
11. 根据元素是否满足条件创建多个列表
有时候,我们需要根据元素是否满足特定条件来将它们存储在不同的列表中。例如,假设我们有一组数字,我们想将大于等于5和小于5的数字分别存储在两个列表中:
# 根据元素是否满足条件创建多个列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] greater_than_5 = [] less_than_5 = [] for num in numbers: if num >= 5: greater_than_5.append(num) else: less_than_5.append(num) print("大于等于5的数字列表:", greater_than_5) print("小于5的数字列表:", less_than_5)
这将根据数字是否大于等于5来将其存储在两个不同的列表中。
总结
总的来说,本文介绍了在Python中利用循环创建多个列表的多种方法,并通过具体的代码示例进行了展示和解释。从根据固定数量、条件、数据类型、属性、索引范围、哈希值等不同角度出发,我们探讨了如何灵活地利用循环结合列表推导式或条件语句来创建多个列表。这些方法不仅提高了代码的灵活性和可维护性,还能够加速开发过程并提高程序的性能。
通过本文的学习,读者可以掌握在Python中处理数据并组织成多个列表的技巧,从而更加有效地进行数据操作和管理。同时,灵活运用循环和列表推导式等Python特性,能够使代码更加简洁、清晰和优雅。在实际项目中,根据具体需求选择合适的方法来创建多个列表将会成为编程中的重要技能,帮助提高代码的质量和效率。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
6个实例带你解读TinyVue 组件库跨框架技术
本文分享自华为云社区《6个实例带你解读TinyVue 组件库跨框架技术》,作者: 华为云社区精选。 在DTSE Tech Talk 《手把手教你实现mini版TinyVue组件库》的主题直播中,华为云前端开发DTSE技术布道师阿健老师给开发者们展开了组件库跨框架的讨论,同时针对TinyVue组件库的关键技术进行了剖析,并通过项目实战演示了一份源码编译出2个不同Vue 框架的组件。最后针对框架间的差异,也给出了相应的技术方案,帮助开发者们实战完成组件库跨框架。 直播链接:https://bbs.huaweicloud.com/live/DTT_live/202404171630.html 一、手把手带你实现mini 版 TinyVue 当前实现组件库的跨框架技术,是提升Web页面开发效率与应用灵活性的重要手段。本次直播的实战环节,用300行代码模拟了 TinyVue 组件库的跨框架实现,开发者可以在mini 版组件库中,复现跨框架及多端适配两大功能。同时通过本期的实操环节,也给开发者呈现一个明确且详尽的实现流程,协助大家更好的理解并掌握跨框架技术并运用到实际工作中。 具体源码可参考:ht...
- 下一篇
《HelloGitHub》第 97 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣! 以下为本期内容|每个月 28 号更新 C 项目 1、freeswitch:运营商级的开源电话平台。这是一个支持 SIP、WebRTC 等多种通信协议的开源通信框架,它作为一个多用途的软交换机,可以用来创建各种语音和消息服务,比如企业电话系统、虚拟呼叫中心、视频会议服务等。 2、NetHack:一款历史悠久的 Roguelike 游戏。这是一款经典的 Roguelike 单机游戏,玩家将扮演一位地下城的探险者去寻找神秘的 Yendor 项链。游戏的界面由 ASCII 字符组成,具有自由度高、难度大、地图随机生成和永久死亡的特点,被玩家称为可以玩一辈子的游戏。 3、rt-thread:小而美的物联网...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6