Python-VBA函数之旅-list函数

news2024/10/6 12:22:43

目录

一、list函数的常见应用场景:

二、list函数使用注意事项:

三、如何用好list函数?

1、list函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421 



一、list函数的常见应用场景:

        list函数在Python中有许多实际应用场景,主要因为它能够将各种可迭代对象转换为列表,从而使这些对象更易于处理和操作,常见的应用场景有:

1、转换其他可迭代对象为列表:list()函数可以用于将其他任何可迭代对象(如字符串、元组、集合、字典的键或值、迭代器对象、文件对象等)转换为列表。

2、结合列表推导式使用:虽然列表推导式本身就能直接生成列表,但有时候我们可能希望将生成器表达式(与列表推导式类似,但返回生成器对象)转换为列表。这时,可以使用list()函数。

3、结合高阶函数使用:list()函数可以结合其他高阶函数,如map()、filter()函数等,将高阶函数返回的结果转换为列表。

4、列表与其他数据结构的交互:在数据处理和分析中,经常需要将列表与其他数据结构(如字典、集合等)进行交互,list()函数可以在这些交互中发挥作用,例如将字典的键或值转换为列表,或者将集合与列表进行合并或比较。

5、数据转换和兼容性:当需要将其他编程语言或数据格式中的数据转换为Python列表时,list()函数非常有用。例如,从JSON或CSV格式的数据中读取数据时,经常需要将数据转换为Python列表进行处理。

        总之,在Python编程中,list()函数的灵活性和通用性使其在处理各种数据类型和数据结构时非常有用。

二、list函数使用注意事项:

        在使用Python中的list()函数时,有几个注意事项需要牢记,以确保代码的正确性和效率:

1、参数类型:list()函数接受一个可迭代对象作为参数,并将其转换为一个列表;如果提供的参数不是可迭代的,会引发TypeError异常,确保传递给list()的参数是可以迭代的,比如字符串、元组、集合、字典(会返回键的列表)、迭代器、生成器等。

2、空参数:如果不提供任何参数调用list()函数,它将返回一个空列表。

3、列表推导式与list()函数:虽然list()函数可以用于将迭代器转换为列表,但很多时候使用列表推导式(list comprehension)更为简洁和直观,列表推导式是创建列表的一种快捷方式,无需显式调用list()函数。

4、性能考虑:对于非常大的可迭代对象,将其转换为列表可能会消耗大量内存,在这种情况下,考虑是否真的需要整个列表,或者是否可以通过迭代原始可迭代对象来逐个处理元素,以节省内存。

5、字典与list()函数:当对字典使用list()函数时,默认会得到字典键的列表,如果你想要得到值的列表,你需要显式地调用list(dict.values())。

6、可变性与原地修改:list()函数返回的是一个新的列表,它不会修改原始的可迭代对象,如果你对返回的列表进行修改,原始的可迭代对象不会受到影响。

7、类型变化:list()函数会保留元素的基本类型,但不会保留原始数据结构的特性。例如,将集合转换为列表会丢失集合的无序性和元素唯一性。

8、迭代器消耗:如果对一个迭代器使用list()函数,迭代器将被完全消耗,即无法再次从头开始迭代;如果你需要多次迭代同一数据,应该在调用list()函数之前保存迭代器的状态,或者创建可迭代对象的多个副本。

9、避免不必要的转换:如果你已经有了一个列表,并且只是想要做一些操作(比如排序或筛选),那么通常不需要再次调用list()函数,相反,你可以直接使用列表的方法(如sort()函数或列表推导式)来修改列表。

        综上所述,记住这些注意事项可以帮助你更有效地使用list()函数,并避免在编程中遇到常见的问题和陷阱。

三、如何用好list函数?

        要有效地使用Python中的list()函数,你可以遵循以下建议:

1、了解基本用法:首先,确保你理解`list()`函数的基本功能:将可迭代对象转换为列表。这适用于各种数据类型,如字符串、元组、集合、字典的键或值、文件对象等。

2、优先使用列表推导式:在很多情况下,列表推导式(list comprehension)是创建列表的更简洁、更可读的方式,而不需要显式使用list()函数,列表推导式特别适用于需要对序列中的每个元素进行某种转换或筛选的场景。

3、结合高阶函数使用:list()函数可以与Python的高阶函数(如map()、filter()和reduce())结合使用,以实现对列表元素的复杂操作。

4、处理字典和集合:当处理字典时,可以使用list()函数来获取键或值的列表;对于集合,list()函数可以将其转换为列表,但请注意集合是无序的,因此转换后的列表顺序可能与原集合不同。

5、迭代器和生成器:list()函数也可以用于将迭代器或生成器的内容转换为列表,这在需要多次访问相同数据或需要随机访问元素时很有用。

6、注意内存使用:将大型可迭代对象转换为列表可能会消耗大量内存,在处理大数据时,考虑是否真的需要整个列表,或者是否可以通过迭代原始可迭代对象来逐个处理元素。

7、避免不必要的转换:如果你已经有一个列表,并且只是想对其进行修改,那么通常不需要再次使用list()函数;相反,你可以直接使用列表的方法(如append()、extend()、remove()等)或列表推导式来修改列表。

        总之,只有通过遵循这些建议,你才能更有效地使用list()函数,并编写出更简洁、更高效的Python代码。

1、list函数:
1-1、Python:
# 1.函数:list
# 2.功能:
# 2-1、用于创建一个空列表
# 2-2、用于将可迭代对象转换为一个新列表
# 3.语法:
# 3-1、list()
# 3-2、list(iterable)
# 4.参数:
# 4-1、无参数
# 4-2、iterable:可选参数,表示任何可迭代对象
# 5.返回值:
# 5-1、返回一个空列表
# 5-2、返回一个新列表
# 6.说明:
# 7.示例:
# 用dir()函数获取该函数内置的属性和方法
print(dir(list))
# ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',
# '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__',
# '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
# '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__',
# '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

# 用help()函数获取该函数的文档信息
help(list)

# 应用一:转换其他可迭代对象为列表
# 示例1:从字符串转换为列表
# 将字符串转换为字符列表
str_data = "Hello, World!"
char_list = list(str_data)
print(char_list)
# ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']

# 示例2:从元组转换为列表
# 将元组转换为列表
tuple_data = (1, 2, 3, 4, 5)
list_from_tuple = list(tuple_data)
print(list_from_tuple)
# [1, 2, 3, 4, 5]

# 示例3:从集合转换为列表
# 将集合转换为列表(注意集合是无序的,所以每次转换的结果顺序可能不同)
set_data = {6, 4, 2, 8, 10}
list_from_set = list(set_data)
print(list_from_set)
# [2, 4, 6, 8, 10]

# 示例4:从字典的键或值转换为列表
# 将字典的键转换为列表
dict_data = {'a': 1, 'b': 2, 'c': 3}
key_list = list(dict_data.keys())
print(key_list)
# 将字典的值转换为列表
value_list = list(dict_data.values())
print(value_list)
# ['a', 'b', 'c']
# [1, 2, 3]

# 示例5:从文件读取的行转换为列表(每行作为列表的一个元素)
# 打开文件,并将每一行读取为列表的一个元素
with open('file.txt', 'r') as file:
    lines_list = list(file)
print(lines_list)
# ['1111\n', '222\n', '333\n', '444']

# 示例6:从迭代器转换为列表
# 创建一个迭代器,并转换为列表
def my_iterator():
    yield 1
    yield 2
    yield 3
iterator_obj = my_iterator()
list_from_iterator = list(iterator_obj)
print(list_from_iterator)
# [1, 2, 3]

# 应用二:结合列表推导式使用
# 示例1:创建一个平方数的列表
# 创建一个包含 1 到 10 的平方数的列表
square_list = list(x**2 for x in range(1, 11))
print(square_list)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 示例2:过滤列表中的偶数
# 创建一个包含1到10的所有偶数的列表
original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(num for num in original_list if num % 2 == 0)
print(even_numbers)
# [2, 4, 6, 8, 10]

# 示例3:将字符串列表转换为大写
# 创建一个包含大写字母的列表,原始列表是字符串的小写形式
strings_list = ["hello", "world", "python"]
uppercase_list = list(string.upper() for string in strings_list)
print(uppercase_list)
# ['HELLO', 'WORLD', 'PYTHON']

# 示例4:创建一个列表,其中每个元素是元组的平方和
# 创建一个列表,其中每个元素是一个元组的两个数字的平方和
tuples_list = [(1, 2), (3, 4), (5, 6)]
sum_of_squares = list(x**2 + y**2 for x, y in tuples_list)
print(sum_of_squares)
# [5, 25, 61]

# 示例5:从字典中提取值并创建列表
# 创建一个字典,并使用列表推导式提取所有的值到列表中
dict_data = {'a': 10, 'b': 20, 'c': 30}
values_list = list(dict_data.values())
print(values_list)
# [10, 20, 30]

# 示例6:使用列表推导式结合条件语句和list()函数
# 创建一个列表,其中元素是1到20之间的数,只包含能被3整除的数
divisible_by_three = list(num for num in range(1, 21) if num % 3 == 0)
print(divisible_by_three)
# [3, 6, 9, 12, 15, 18]

# 应用三:结合高阶函数使用
# 示例1:使用map()函数与list()函数
def multiply_by_two(x):
    return x * 2
# 创建一个列表
numbers = [1, 2, 3, 4, 5]
# 使用map函数和list函数将列表中的每个元素乘以2
doubled_numbers = list(map(multiply_by_two, numbers))
print(doubled_numbers)
# [2, 4, 6, 8, 10]

# 示例2:使用filter()函数与list()函数
# 定义一个函数,判断一个数是否是偶数
def is_even(x):
    return x % 2 == 0
# 创建一个列表
numbers = [1, 2, 3, 4, 5, 6]
# 使用filter函数和list函数过滤出列表中的偶数
even_numbers = list(filter(is_even, numbers))
print(even_numbers)
# [2, 4, 6]

# 示例3:使用lambda表达式与map()和list()函数运行时间
# 创建一个列表
numbers = [1, 2, 3, 4, 5]
# 使用lambda表达式和map函数将列表中的每个元素乘以2,然后用list转换为列表
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers)
# [2, 4, 6, 8, 10]

# 示例6:使用operator模块中的函数与map()函数和list()函数
import operator
# 创建一个列表
numbers = [5, 3, 8, 4, 2]
# 使用operator模块中的neg函数和map函数计算列表中每个元素的相反数,然后用list转换为列表
negated_numbers = list(map(operator.neg, numbers))
print(negated_numbers)
# [-5, -3, -8, -4, -2]

# 应用四:列表与其他数据结构的交互
# 示例1:将元组转换为列表
# 创建一个元组
tuple_data = (1, 2, 3, 4, 5)
# 使用list()函数将元组转换为列表
list_from_tuple = list(tuple_data)
print(list_from_tuple)
# 修改列表元素
list_from_tuple[0] = 10
print(list_from_tuple)
# [1, 2, 3, 4, 5]
# [10, 2, 3, 4, 5]

# 示例2:将集合转换为列表
# 创建一个集合
set_data = {6, 4, 2, 8, 10}
# 使用list()函数将集合转换为列表
list_from_set = list(set_data)
print(list_from_set)  # 输出可能是: [6, 4, 2, 8, 10],但顺序可能不同
# 由于集合是无序的,转换后的列表顺序可能与原始集合中的元素顺序不同
# [2, 4, 6, 8, 10]

# 示例3:将字典的键或值转换为列表
# 创建一个字典
dict_data = {'a': 1, 'b': 2, 'c': 3}
# 将字典的键转换为列表
keys_list = list(dict_data.keys())
print(keys_list)
# 将字典的值转换为列表
values_list = list(dict_data.values())
print(values_list)
# ['a', 'b', 'c']
# [1, 2, 3]

# 示例4:将字符串转换为列表
# 创建一个字符串
str_data = "Hello, World!"
# 使用list()函数将字符串转换为字符列表
char_list = list(str_data)
print(char_list)
# 修改列表中的字符
char_list[0] = 'h'
print(''.join(char_list))
# ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']
# hello, World!

# 示例5:将列表中的元素转换为另一种数据结构(例如集合)
# 创建一个列表
list_data = [1, 2, 2, 3, 4, 4, 4]
# 使用set()函数将列表转换为集合(去重)
set_from_list = set(list_data)
print(set_from_list)
# 再将集合转换回列表(顺序可能不同)
list_from_set = list(set_from_list)
print(list_from_set)
# {1, 2, 3, 4}
# [1, 2, 3, 4]

# 示例6:将列表中的元素作为参数传递给函数
# 定义一个函数,接受任意数量的参数并打印它们
def print_args(*args):
    for arg in args:
        print(arg)
# 创建一个列表
args_list = [1, 'a', 3.14, True]
# 将列表的元素作为参数传递给函数
print_args(*args_list)
# 1
# a
# 3.14
# True
1-2、VBA:
略,待后补。
2、推荐阅读:

1、Python-VBA函数之旅-iter()函数

Python算法之旅:Algorithm

Python函数之旅:Functions 

个人主页:神奇夜光杯-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1627437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2015-2023年上市公司商道融绿ESG评级数据

2015-2023年上市公司商道融绿ESG评级数据 1、时间:2015-2023年 2、来源:整理自WIND 3、指标:代码、名称、商道融绿ESG评级 4、范围:上市公司 5、指标解释: 商道融绿ESG评级体系是一种全新的评级体系,…

Restful API 具体设计规范(概述)

协议 https 域名 https://www.baidu.com/api 版本 https://www.baidu.com/v1 路径 https://www.baidu.com/v1/blogs 方法 数据过滤 状态码返回结果 返回的数据格式 尽量使用 JSON,避免使用 XML。 总结: 看 url 就知道要什么看 http method 就知道干…

【网络技术】【Kali Linux】Wireshark嗅探(十一)以太网Ethernet协议报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客: 【网络技术】【Kali Linux】Wireshark嗅探(一)ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探(二)TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

BUUCTF--web(2)

1、[HCTF 2018]admin1 打开题目后发现有注册和登录两个页面,因为题目提示admin,尝试用admin进行爆破 爆破得到密码为123 登录得到flag 2、[护网杯 2018]easy_tornado1 打开题目后有三个文件,分别打开查看 在url地址栏中发现包含两个参数&a…

DBSCAB算法介绍(Python3实现)

一、DBSCAB算法简介 1、DBSCAN算法 基于密度的空间聚类的应用(Density-based spatial clustering of applications with noise,DBSCAN)算法是由Martin Ester, Hans-Peter Kriegel, Jrg Sander和Xiaowei Xu于1996年提出的一种聚类分析算法。 其原始论文是在1996年的…

ASP.NET某企业信息管理系统的设计与实现

摘 要 信息管理系统就是我们常说的MIS(Management Information System),它是一个计算机软硬件资源以及数据库的人-机系统。经过对题目和内容的分析,选用了Microsoft公司的ASP.NET开发工具,由于它提供了用于从数据库中访问数据的强大工具集,使用它可以建立开发比较完善的数据库…

untiy avpro播放超过8K视频的解决方案

安转LAV Filters解码器,然后指定Avpro使用这个解码器播放即可 第一步 安装解码器 下载链接 第二步 AVPro设置 MediaPlayer脚本中一共两处

计算完美数

一、概要 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 例如&#xf…

排序算法-计数排序

一、计数排序 这种排序算法 是利用数组下标来确定元素的正确位置的。 如果数组中有20个随机整数,取值范围为0~10,要求用最快的速度把这20个整数从小到大进行排序。 很大的情况下,它的性能甚至快过那些时间复杂度为O(nlogn)的排序。…

API和微服务设计的优化方式有哪些?

在构建响应迅速、用户体验良好的应用程序中,API性能的优化至关重要。在构建高性能的API时,采取综合策略是至关重要的。通过采用一系列策略,我们可以确保API在处理请求时高效运行,提供流畅的服务。 一、API和微服务设计的优化可以…

Linux系统安全及应用(1)

目录 一.账号安全控制 系统账号清理 二.密码安全控制 密码安全控制 三.命令历史限制 命令历史限制 四.限制su切换用户 1)将信任的用户加入到wheel组中 2)修改su的PAM认证配置文件 ​编辑五.PAM认证的构成 六.使用sudo机制提升权限…

机器人系统ros2-开发实践03-监听节点的参数变化(C++)

背景: 通常,节点需要响应其自身参数或另一个节点参数的更改。 ParameterEventHandler 类可以轻松侦听参数更改,以便您的代码可以响应它们。本教程将向您展示如何使用 ParameterEventHandler 类的 C 版本来监视节点自身参数的更改以及另一个节…

深入了解Semaphore、CountDownLatch等实用工具的用法

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject:build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

【智能算法】囊状虫群算法(TSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年,S Kaur等人受到囊状虫群自然行为启发,提出了囊状虫群算法(Tunicate Swarm Algorithm, TSA)。 2.算法原理 2.1算法思想 TSA模拟了囊状虫群在导…

2分钟自己写小游戏:使用js和css编写石头剪刀布小游戏、扫雷小游戏、五子棋小游戏。新手老手毕业论文都能用。

系列文章目录 【复制就能用1】2分钟玩转轮播图,unslider的详细用法 【复制就能用2】css实现转动的大风车,效果很不错。 【复制就能用3】2分钟自己写小游戏:剪刀石头布小游戏、扫雷游戏、五子棋小游戏 【复制就能用4】2024最新智慧医疗智慧医院大数据…

【介绍下OneFlow概念清单】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

61、回溯-分割回文串

思路: 还是全排列的思路,列出每一种组合,然后验证是否是回文,如果是子串放入path中,在验证其他元素是否也是回文。代码如下: class Solution {// 主方法,用于接收一个字符串s并返回所有可能的…

【GO】命令行解析 os 与 flag

目录 OS解析命令 简单用法 进阶用法 flag命令解析 基础实例 1. 自定义数据类型 2. 创建多个 FlagSet 3. 整合环境变量和配置文件 os与flag 关键点解析 程序的作用 示例命令行调用 在 Go 语言中,命令行解析是一项基本且常用的功能,它允许开发者…

玄子Share-Shell编程之条件语句

玄子Share-Shell编程之条件语句 条件测试操作 test命令 测试表达式是否成立,若成立返回0,否则返回其他数值 格式1:test 条件表达式 格式2:[ 条件表达式 ] # 至少应有一个空格文件测试 [ 操作符 文件或目录 ][rootlocal…