ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

可迭代对象的分解

2021-01-06 20:35:39  阅读:171  来源: 互联网

标签:last 迭代 middle 对象 args python 分解 print home


1、序列分解为单独的变量

任何序列都可以通过赋值操作分解成单独的变量。

x=(1,2)
a,b=x
print(a)
1
print(b)
2

data=['love python',1,(2020,1,1)]
s,i,tu=data
print(s)
'love python'
print(i)
1
print(tu)
(2020, 1, 1)

但是要注意,变量的总数与结构要与待分解的序列一致。

实际上,只要对象是可迭代的,就可以执行分解操作。

s='hello'
a,b,c,d,e=s
print(a)
'h'

2、任意长度的可迭代对象的分解

如果待分解的可迭代对象太长,但是你只是想要其中一部分元素,你可以使用'*表达式'来收集多余的值。

first,*middle,last=1,2,3,4,5,6,7,8,9
print(first)
1
print(middle)
[2, 3, 4, 5, 6,7, 8]
print(last)
9

注意,middle值一直都是列表。

first,*middle,last=1,2
print(first)
1
print(middle)
[]
print(last)
2

又如,对于列表l=[9,8,1,7,5,10,3,4]

如果要比较最后一位和前面各位均值的大小,可以这样做:

l=[9,8,1,7,5,10,3,4]
*re,la=l
if sum(re)/len(re)>la:
    print(True)
True

 3、实例

'*表达式'用于带标记的元组:

records=[
    ('1',8,10),
    ('a','love python','forever'),
    ('2',7,9),
    ('b','enthusiasm','forever')
]
for tag,*args in records:
    if tag.isalpha():
        print(' '.join(args))
    else:
        print(sum(args)/len(args))
    

输出结果为:

9.0
love python forever
8.0
enthusiasm forever

提取路径字符串中相关的值:

ss='/home/w/3tensorflow2.0/chapter_5/data/titanic'
_,home,user,*_,wenjianjia=ss.split('/')
print(home)
'home'
print(user)
'w'
print(wenjianjia)
'titanic

使用'*表达式'实现一个递归求和函数:

items=[1,2,3,4,5,6,7]
def mysum(items):
    head,*tail=items
    return head+mysum(tail) if tail else head 

print(mysum(items))
28

 

标签:last,迭代,middle,对象,args,python,分解,print,home
来源: https://www.cnblogs.com/WGJ909001/p/14243074.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有