python中在列表前面加星号(*)的作用

Python列表(list)详解 Python 列表list 详细讲解,包含列表list的增删改查。append()、extend()、inset(),del、remove()、pop()、clear(),index(),count()方法详解,列表索引和切片详解 阅读详情

python 里面列表前面加星号, 例如 : *[1, 2, 3],这是什么用法?

1、先说作用:
作用是:将列表解开成几个独立的参数,传入函数。类似的运算符还有两个星号(**),是将字典解开成独立的元素作为形参。

例如:add(a,b)函数需要输入两个数,在主函数中list =  [1, 2]    c = add(*list),此处*list就表示的是将list中的两个数拆开之后分别输入,等价于c = add(list[0], list[1])。

这样做的目的是为了简化代码

2、再放代码:

def add(a, b):
    return a + b
 
 
data = [4, 3]
print(add(*data))
print(add(data[0], data[1]))
# 等价于 print add(4, 3)
data = {'a': 4, 'b': 3}  # 当将字典传入作为形参时。。。形参的名字和字典的键的名字要相同
print(add(**data))  # 这里可以两个*,但后续直接对字典操作则出错
# 等价于 print add(4, 3)

-------------------------------------------------------------------

def add(a, b, c):
    print(a,b,c)
    

c = {'a': 1, 'b': 2, 'c': 3}
add(**c) # 1 2 3
c = {1: 'a', 2: 'b', 3: 'c'}
add(**c) # TypeError: keywords must be strings
c = {1: 'a', 2: 'b', 3: 'c'}
add(*c) # 1 2 3
-------------------------------------------------------------------

a = [1, 2, 3]
b = (1, 2, 3)
c = {1: "a", 2: "b", 3: "c"}
d = {v:k for k,v in c.items()} # d = {1: 'a', 2: 'b', 3: 'c'}
print(a, "====", *a) # [1, 2, 3] ==== 1 2 3
print(b, "====", *b) # (1, 2, 3) ==== 1 2 3
print(c, "====", *c) # {1: 'a', 2: 'b', 3: 'c'} ==== 1 2 3 # 打印的是键
print(d, "====", *d) # {'a': 1, 'b': 2, 'c': 3} ==== a b c # 打印的是键


其中的几个注意点:

1、当将字典传入作为形参时。。。形参的名字和字典的键的名字要相同,如图,字典的键为a,b,所以形参的名字也是a,b

2、只有在作为实参输入时,**data是正确的。如果直接对一个字典做**dict,python会报错。

3、*dict得到的是键而不是值,如代码中的*c

3、对向量操作
不光是列表、元组、字典,由numpy生成的向量也可以拆分;

4、用途
了解过函数中*args和**kwargs的人应该知道,这两个形参都接收若干个参数,通常我们将其称为参数组;

*args:接收若干个位置参数,转换成元组tuple形式

**kwargs:接收若干个关键字参数,转换成字典dict形式

ps:需要注意的是位置参数*args,一定要在关键字参数**kwargs前

例子:

def output(*args):
    print(type(args))
    for i in args:
        print(i)
 
 
list = [1, 2, 3]
output(list)
output(*list)
 
输出:
<class 'tuple'>
[1, 2, 3]
<class 'tuple'>
1
2
3


不难发现,如果不加*,add函数将整个列表当做一个元素使用,也就是add(([1,2,4,5],))。而带有*号的参数,此时相当于add((1, 2, 4, 5));

5、*号也可以作用于二维的列表
显然也是将列表进行拆分,结果是两个一维列表;如下代码所示

# 作用于二维列表
array = [[1, 2, 3],
         [4, 5, 6]
         ]
print(array)
print(*array)
print(type(array))
print(type(*array))
 
输出:
[[1, 2, 3], [4, 5, 6]]
[1, 2, 3] [4, 5, 6]
<class 'list'>
 
print(type(*array))
TypeError: type() takes 1 or 3 arguments


如图,print(type(*array))会报错,这是因为type的输入不是一个导致的,这也说明,*号运算符将二维列表拆成两个列表

这么一看,这个带*变量的作用,就仿佛是把列表解开一层似的,而python中有一个zip函数,功能与之相反。

zip是将一个或多个可迭代对象进行包装压缩,返回将结果是列表;

通俗的说:zip()压缩可迭代对象,*号解压可迭代对象;

最后需要注意的是:

可迭代对象才可以使用*号拆分;

带*号变量严格来说并不是一个变量,而更应该称为参数,它是不能赋值给其他变量的,但可以作为参数传递;

Python列表和字典前面为什么要加星号(**)? 列表前面加星号作用是将列表解开(unpacke)成多个独立的参数,传入函数。单星号*和双星号**除了作为“乘”和“幂”的数值运算符外,还在列表、元组、字典的操作中有着重要作用。是将字典解开成为独立的元素作为形参。字典前面加两个星号, 阅读详情

相关推荐

ython 列表(List)的常用操作方法详解

操作方法创建列表[]或list()访问元素索引负索引切片修改元素索引赋值切片赋值遍历列表for循环、添加元素append()insert()extend()删除元素pop()remove()delclear()查找元素index()in操作符排序sort()sorted()reverse()Python 列表功能强大且易用,掌握这些操作可以大幅提高开发效率!💡🚀。

m0_62599305的博客 1064

Python 中的 *list

python *list

orz_include的博客 4676

Python中的List

List (列表)是 Python 内置的一种数据类型。它是一种有序的集合,可以随时添加和删除其中的元素。那为什么要有 List (列表)呢?我们用一个例子来说明。现在有一个团队要出去玩,要先报名。如果用我们之前学过的知识,那么就是用一个字符串变量把他们都记录起来。但是这样太麻烦了,而且也不美观。在编程中,一定要学会偷懒,避免「重复性工作」。如果有一百个成员,那么你及时是复制粘贴,也会把你写烦。这时候就可以使用列表了。就这样,一行代码就可以存放 N 多个名字了。

热情、奔放、快乐编程! 497

【Python】序列解包/列表前加星号*list

序列解包功能十分强大,应用极其广泛。如果对其不了解,初看一下,还真的会一脸懵逼。希望本文的案例学习对您有所帮助!

算法与编程之美 1914

QGIS|如何将WGS84转换为CGCS 2000坐标系?

QGIS 3中如何将WGS84转换为国家2000大地坐标系? 今天来回答一位朋友在后台留言提出的问题:怎么将WGS84坐标转换为国家2000大地坐标系。 01工程坐标系 从地图窗口右下角的状态栏可以看到当前地图窗口的坐标系,即工程坐标系(Project CRS)。当前地图可以由多个图层组成,各种来源数据的坐标参照系(Layer CRS)并不一定相同,QGIS在绘制图层之前将根据工程坐标系进行动态坐标转换,然后显示在地图画布中。 因此,在处理空间数据的过程中,一定要特别注意...

QGISClass的博客 1万+

SpringBoot3 + Vben5.0实战:从零搭建企业级管理后台(附完整代码)

本文详细介绍了如何从零开始,使用SpringBoot3与Vben5.0技术栈搭建现代化企业级管理后台。通过对比分析,阐述了该组合在开发效率、性能(如虚拟线程)和权限模型(RBAC)方面的优势,并提供了从项目初始化、核心功能开发到部署运维的完整实战指南,帮助开发者快速构建高性能、易维护的后台系统。

weixin_29306317的博客 172

Python中星号(*)的使用

Python中,单星号 * 和双星号 ** 除了作为“乘”和“乘方”的数值运算符外,还在列表、元组、字典的操作中有看到,下面对其进行解释: 单星号 * 单星号 * 用于对列表list或元组tuple中的元素进行取出(unpacke)。例如,np.arange函数需要独立的开始和停止参数: import numpy as np l = [2, 6] # 或者 l = (2, 6) print(np.arange(*l)) # 输出: [2 3 4 5] 双星号 ** 双星号 ** 可将字典里的“

qq_34525916的博客 6208

320x240 TFT屏的SPI DMA驱动避坑指南:基于HC32F460的时序调试心得

本文详细介绍了基于HC32F460 MCU驱动320x240 TFT屏的SPI DMA实战经验,涵盖硬件设计、波形诊断、DMA优化及高级调试技巧。重点解析SPI时序配置、DMA缓冲区对齐等常见问题,并提供逻辑分析仪波形诊断方法和性能优化策略,帮助开发者规避典型陷阱,提升显示性能。

weixin_42639246的博客 372

python 里面列表前面加星号的意思

python 里面列表前面加星号, add([1,5])这是什么用法? 例如 from operator import add add([1,5]) 6 作用是将列表解开成两个独立的参数,传入函数,还有类似的有两个星号,是将字典解开成独立的元素作为形参。 # -*- coding:utf-8 -*- def add(a, b): return a+b data = [4,3] pr...

hellenlee22的博客 6888

Apache-Plc4x-Modbus-Tcp学习记录(一)

Apache-Plc4x-Modbus-Tcp学习记录(一)

weixin_45325423的博客 6988

Abaqus仿真突然中断?手把手教你解决SIGTERM/SIGINT报错(附完整命令行方案)

本文深入解析Abaqus仿真中因SIGTERM或SIGINT信号导致进程意外中断的根本原因,并提供了一套完整的命令行解决方案。通过将作业提交方式从图形界面切换到命令行,并配合关键参数设置,可以有效避免因会话空闲超时或外部干扰引发的计算中断,保障长时间仿真任务的稳定运行。

devops8pract的博客 746

Python:列表和字典前面加星号(**)

Python 中,单星号(*)和双星号(**)除了作为“乘”和“幂”的数值运算符外,还在列表、元组、字典的操作中有着重要作用。 小例子 import numpy as np _list = [1,2,3,6] _tuple = (1,2,4,5) _dict = {'a':1,'b':5,'c':6} _arange = np.arange(3,8) print(_list,'==================',*_list) print(_tuple,'==================',*

北国觅梦 5860

基于高频变压器的隔离式推挽栅极驱动电路

摘要:本文介绍了一种基于高频变压器的隔离式推挽栅极驱动电路,通过变压器实现电气隔离,为功率MOS管提供可靠驱动信号。电路包含输入侧PWM信号处理、变压器磁耦合隔离传输以及副边驱动逻辑等关键部分,利用电阻电容网络控制开关速度并防止误触发。该隔离驱动方案广泛应用于高压开关电源、新能源汽车电机控制器、光伏逆变器和工业变频器等需要高电压隔离及抗干扰能力的电力电子设备中,有效保障系统安全性和可靠性。

qq_37999850的博客 485

python中变量前面加星号*

python中变量e前面加星号,即*elist或tuple前面加星号字典前面加星号 list或tuple前面加星号 列表或元组前面加星号作用是将列表解开成两个独立的参数,传入函数; def add(x,y): return x+y b = [1,4] e = (2,3) add(*e) add(*b) >>> 5 >>> 5 字典前面加星号 字典前面加两个星号,是将字典的值解开成独立的元素作为形参。 def add(x,y): return x+y d= {

Michael_Well的博客 1万+

沙猫群优化算法(SCSO)详解:从沙漠生存智慧到全局优化引擎

本文详细介绍了沙猫群优化算法(SCSO),这是一种新型元启发式优化算法,灵感来源于沙猫在沙漠环境中的卓越狩猎行为。SCSO通过模拟沙猫的低频探测能力和精确攻击策略,将优化问题转化为搜索和捕获"猎物"的过程。算法核心包括探索阶段(全局搜索)和开发阶段(局部精细搜索),通过灵敏度范围模型和自适应控制参数实现两者的平衡。SCSO具有参数简单、收敛性能好等优点,适用于解决复杂全局优化问题。

qq_42212808的博客 202

会话管理技巧——如何优化OpenClaw的上下文理解能力(2026进阶版)

本文深入探讨了OpenClaw系统的会话管理技术,重点介绍了会话定义、生命周期管理和上下文优化策略。会话管理包含会话ID、用户信息、状态等核心要素,以及创建、维护、终止和恢复四个生命周期阶段。上下文管理通过ContextManager类实现,支持创建、更新、消息添加和变量管理等功能,并采用历史记录机制确保会话连续性。ContextOptimizer类则负责应用优化规则,通过消息和变量压缩等技术提升系统性能。这些技术共同构建了OpenClaw强大的会话管理能力,为AI助手提供了高质量的交互体验基础。

博客 491

python列表前加星号是什么_python 里面列表前面加星号的意思

python 里面列表前面加星号, add(*[1,5])这是什么用法?例如:from operator import addadd(*[1,5])6作用是将列表解开成两个独立的参数,传入函数,还有类似的有两个星号,是将字典解开成独立的元素作为形参。# -*- coding:utf-8 -*-def add(a, b):return a+bdata = [4,3]print add(*data)#...

weixin_39874379的博客 966

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

为什么Python列表和字典前面会加星号(**)?

嗨喽~大家好呀,这里是魔王呐 ❤ ~!Python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外,还在列表、元组、字典的操作中有着重要作用。

python56123的博客 1712

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python中单星号(*)和双星号(*)的区别

一、单星号(*)和双星号(**)概念     1、什么是星号变量     最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的*b位置上将其转化成元组,而双星号代表这个位置接收任意多个关键字参数,在**b位置上将其转化成字典: ∗*∗  该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4) ∗...

qq_43468807的博客 1352

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python 中星号(*)的用法

星号​​*​​ 往往被称为乘法运算符,是所有程序中最为常用的运算符号之一,在Python 中,星号还有很多隐藏的强大功能。本文将用最容易理解的例子来解释星号*的 五个使用场景,从初级用法到高阶用法。

6296

Python星号表达式(*)用法详解

目录 一、作为函数的可变参数标志以及参数解包 二、赋值语句中作为可变变量标志 三、在除函数参数语境外的其他语境下对可迭代对象进行解包 星号在python中的用法主要可分为三类:一是作为函数的可变参数标志以及在函数参数的语境下对可迭代对象进行解包并进行参数传递(参数解包),二是作为赋值语句中的可变变量标志,三是在非函数参数的其他特定的语境中直接对可迭代对象进行解包操作...

S_o_l_o_n的博客 1万+

Python 星号(*)操作符的用法

在定义一个方法的时候,星号的意思就是: 收集其余位置的参数,如果不提供任何收集的元素给星号,就是一个空元组。下面看一下例子:def prints(*arg): print arg; prints (1,2,3,4,5,6,7)打印的结果是一个元组: (1,2,3,4,5,6,7) , 也就是说该参数(arg) 将传进来的所有参数放在了一个元组中。将方法变形看一看这个方法的好处:def pri

yzj99848873的专栏 1万+

Python列表和字典前面为什么会加星号(**)?

嗨喽,大家好呀~这里是爱看美女的茜茜呐python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外,还在列表、元组、字典的操作中有着重要作用。

m0_72282564的博客 1457

Python列表和字典前面为什么要加星号( )?_python一个 代表列表

Python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外,还在列表、元组、字典的操作中有着重要作用。

m0_60721649的博客 682
上一篇: 找出不相邻数字最大和(递归vs动态规划)
下一篇: 数组中是否存在几个数的相加结果为9(递归vs动态规划)
vegeChickenNotes
博客等级 码龄4年 1粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值