如何一次解压缩两个值?

时间:2016-11-20 01:46:04

标签: python class integer

所以我有这个输入可以是用户想要的整数。

我想把它们分成两部分。

number = input()
a, b = (int(i) for i in numbers.split(' '))
Hey = Change(a, b)

更改只是一个对a,b做某事的类。我的问题是,当我运行它并且用户给出两个以上的整数时,我得到一个错误:“ValueError:解压缩的值太多(预期2)”。

有没有办法设置它,所以它解包前两个然后接下来两个,依此类推?

提前致谢

3 个答案:

答案 0 :(得分:2)

这样的事情:

numbers = input()
tokens = numbers.split()
for a, b in zip(tokens[::2], tokens[1::2]):
    Hey = Change(int(a), int(b))

答案 1 :(得分:2)

Actualy你可以这样做:

gen = (int(i) for i in input().split())
for a in gen:
   Hey = Change(a, next(gen))

因为gen是一个生成器表达式,for循环将获取第一个项目,并将其分配给anext(gen)调用将从生成器获取第二个值,因此您将获得两者成对的价值观。这是更好的解决方案,因为您不需要额外的列表副本,就像在下面的答案中所做的那样。

答案 2 :(得分:1)

numbers = '1 2 5 8 6 9 4 5'
num_list = [int(i) for i in numbers.split(' ')]
for i in num_list[::2]:
    print(i, num_list[num_list.index(i)+1])

出:

1 2
5 8
6 9
4 5