首页 > 其他 > 详细

可迭代对象的分解

时间:2021-01-06 22:08:13      阅读:33      评论:0      收藏:0      [点我收藏+]

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

 

可迭代对象的分解

原文:https://www.cnblogs.com/WGJ909001/p/14243074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!