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特性,能够使代码更加简洁、清晰和优雅。在实际项目中,根据具体需求选择合适的方法来创建多个列表将会成为编程中的重要技能,帮助提高代码的质量和效率。
11个Python循环技巧的更多相关文章
- python 循环技巧
原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 在字典中循环时,关键字和对应的值可以使用 ...
- Python 循环的技巧
当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出 >>> knights = {'gallahad': 'the pure', 'robin': 'the br ...
- 10大python加速技巧
简介 目前非常多的数据竞赛都是提交代码的竞赛,而且加入了时间的限制,这就对于我们python代码的加速非常重要.本篇文章我们介绍在Python中加速代码的一些技巧.可能不是很多,但在一些大的循环或者函 ...
- 一个 11 行 Python 代码实现的神经网络
一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...
- 掌握这个Python小技巧,轻松构建cytoscape导入文件
今天小编和大家分享如何借助Python脚本轻松构建cytoscape导入文件.Cytoscape是一个非常适合展示各种相互作用关系的可视化软件. 具体来说就是可以用于蛋白互作网络的展示,miRNA与蛋 ...
- 《python解释器源码剖析》第11章--python虚拟机中的控制流
11.0 序 在上一章中,我们剖析了python虚拟机中的一般表达式的实现.在剖析一遍表达式是我们的流程都是从上往下顺序执行的,在执行的过程中没有任何变化.但是显然这是不够的,因为怎么能没有流程控制呢 ...
- python基础:python循环、三元运算、字典、文件操作
目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执 ...
- Python循环列表的方法
python循环列表的几种方法: 第一,依次打印列表中的各项值. 1 #!usr/bin/env python3 2 #!-*- Coding:utf-8 -*- 3 4 ''' 5 多种循环列表的方 ...
- python循环与基本数据类型内置方法
今天又是充满希望的一天呢 一.python循环 1.wuile与else连用 当while没有被关键'break'主动结束的情况下 正常结束循环体代码之后会执行else的子代码 "" ...
- C++11之for循环的新用法
C++使用如下方法遍历一个容器: #include "stdafx.h" #include<iostream> #include<vector> int m ...
随机推荐
- archlinux xfce修改桌面字体颜色
参照 https://forums.linuxmint.com/viewtopic.php?t=341804 1.大于等于4.14的版本则在主文件夹的 .config 文件夹 gtk-3.0 中,创建 ...
- 关于 kafka 消息的顺序问题一二
顺序就像就是 12345,任何 12354.12543.51234等都不行. 因为是 mq,所以必然涉及三个主体:发送方.消息服务器.消费方. 一.kafka 消息服务器 kafka brokers ...
- 04 jQuery遍历器
04 jQuery遍历器 如果jQuery一次性选择了很多元素节点. 而我们又希望能拿到每一个元素中的相关信息. 此时可以考虑用jQuery的遍历器来完成对元素的循环遍历. 例如: <!DOCT ...
- 80+产品正通过兼容性测试,OpenHarmony生态蓬勃发展
4 月 25 日,开放原子开源基金会举办了 OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日活动,OpenHarmony PMC 委员代表首次对 ...
- 《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解
测试 Spring 提供了一组测试工具,可以轻松地测试 Spring 应用程序的各个组件,包括控制器.服务.存储库和其他组件.它具有丰富的测试注释.实用程序类和其他功能,以帮助进行单元测试.集成测试等 ...
- java延迟队列DelayQueue及底层优先队列PriorityQueue实现原理源码详解
DelayQueue是基于java中一个非常牛逼的队列PriorityQueue(优先队列),PriorityQueue是java1.5新加入的,当我看到Doug Lea大神的署名之后,我就知道这个队 ...
- jemter返回结果中文乱码
如图,返回的结果,中文出现乱码 对于这个问题有两种解决方法 第一种:修改jemeter文件,需要重启jemter 在 bin 目录下,找到 jmeter.properties 这个文件,修改编码格 ...
- Prometheus AlertManager 生产实践-直接根据 to_email label 发 alert 到对应邮箱
概述 通过之前的文章 - Prometheus Alertmanager 生产配置趟过的坑总结, 我们已经知道 AlertManager 作为告警平台,是非常强大的,可以去重 (deduplicati ...
- CentOS 8 安装更新国内清华大学源手记【亲测成功】
一直和各种OS打交道,仍觉得自己是小白,故深知小白们的困惑和蛋碎,特此将安装更新源的细节和步骤做了详细整理,供大家参考.红字是命令和提示,深灰色代码框中是源配置,本文采用了清华大学CentOS 8的源 ...
- UML 哲学之道——类图[三]
前言 简单整理一些uml中的类图. 正文 类的基本表示法: 名称.属性(类型.可见性).方法(参数.返回值.可见性) 想上面这样,第一行是名称,第二行是属性,第三行是方法 可见性: 表示public ...