如何将列表项分组为元组?

5 投票
3 回答
6182 浏览
提问于 2025-04-17 18:14

我有一串数字,想把每n个数字分成一组,放到一个元组里,该怎么做呢?

比如说,如果我有一个列表a = range(10),我想把每5个数字分成一组,也就是:

b = [(0,1,2,3,4),(5,6,7,8,9)]

我该怎么做呢?另外,如果len(a)不是n的整数倍,我也想要抛出一个错误。

3 个回答

1

这段内容是关于编程问题的讨论,主要涉及一些技术细节和解决方案。虽然具体的问题没有被提到,但可以理解为在编程过程中遇到了一些困难,大家在分享各自的经验和建议。

在编程中,常常会遇到各种各样的问题,比如代码运行不起来、出现错误信息,或者某个功能没有按预期工作。这个时候,程序员们通常会去查找资料、请教同事,或者在像StackOverflow这样的平台上发问。

在这些讨论中,大家会提供不同的解决方法,可能会涉及到一些代码示例、调试技巧,或者是对某些编程概念的解释。这些信息对于初学者来说非常有帮助,因为它们可以帮助你理解问题的本质,并找到解决问题的办法。

总之,这段内容反映了编程社区中人们互相帮助、分享知识的精神,特别是对于那些刚刚入门的编程小白来说,能够从中获得启发和指导。

In [18]: def f(lst,n):    
    ...:     if len(lst)%n != 0:
    ...:         raise ValueError("{} is not a multiple of {}".format(len(lst),n))
    ...:     return zip(*[iter(lst)]*n)

In [19]: lst = range(10)

In [20]: f(lst,5)
Out[20]: [(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]

In [21]: f(range(9),5)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-814a68e0035f> in <module>()
----> 1 f(range(9),5)

<ipython-input-18-3ca911a04fd3> in f(lst, n)
      1 def f(lst,n):
      2     if len(lst)%n != 0:
----> 3         raise ValueError("{} is not a multiple of {}".format(len(lst),n))
      4     return zip(*[iter(lst)]*n)

ValueError: 9 is not a multiple of 5
1

确定 N 是你的组长度

if (len(your_list)%n==0):
    wish_list = [ tuple(your_list[i:i+N]) for i in range(0, len(your_list), N) ]
else:
    raise Exception("not divisible by N")
12

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能会在使用某个功能时,发现它的表现和预期的不一样。这种情况很常见,尤其是当我们刚开始学习编程的时候。

解决这些问题的一个好方法是查看相关的文档或社区讨论,比如StackOverflow。在这些地方,很多人会分享他们的经验和解决方案,帮助其他人更好地理解和使用这些工具。

总之,遇到问题时,不要着急,先看看别人是怎么解决的,或者查阅一下资料,这样能帮助你更快地找到答案。

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [tuple(a[i:i+5]) for i in range(0, len(a), 5)]
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]

撰写回答