首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python子列表创建

Python子列表创建
EN

Stack Overflow用户
提问于 2013-01-12 01:20:38
回答 3查看 1.9K关注 0票数 1

我有一个被打乱的列表,然后我想把它分成6个子列表,每个子列表有6个元素(原始列表中有26个元素)。我知道这需要通过范围创建一个子列表来完成(例如。0-5,6-11等)但是找不到是怎么回事。它应该是非常直接的!到目前为止,我的代码如下:

代码语言:javascript
复制
import random

characters = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

random.shuffle(characters)
EN

回答 3

Stack Overflow用户

发布于 2013-01-12 01:23:28

你可以使用类似这样的东西:

代码语言:javascript
复制
>>> import string
>>> import random
>>>
>>> chars = list(string.uppercase + string.digits)
>>> random.shuffle(chars)
>>>
>>> [chars[i:i + 6] for i in range(0, len(chars), 6)]
[['U', 'I', 'X', '6', 'Q', 'L'],
 ['Y', 'J', 'C', 'S', '8', '0'],
 ['A', 'R', '5', 'F', 'T', 'W'],
 ['N', 'B', 'E', '2', '1', 'V'],
 ['9', 'K', 'O', 'P', '7', '4'],
 ['G', 'M', 'Z', '3', 'D', 'H']]

  • chars[i:i + 6]创建一个长度为i.
  • range(0, len(chars), 6)的子列表,该列表从位置开始,以6range(0,len(chars),6) 0,6,12,18,24,30

为增量在从0len(chars)的范围内循环

票数 1
EN

Stack Overflow用户

发布于 2013-01-12 01:23:29

使用itertools.islice()

代码语言:javascript
复制
In [246]: characters = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

In [247]: it=iter(characters)

In [248]: [list(islice(it,6)) for _ in range(6)]
Out[248]: 
[[0, 1, 2, 3, 4, 5],
 [6, 7, 8, 9, 'A', 'B'],
 ['C', 'D', 'E', 'F', 'G', 'H'],
 ['I', 'J', 'K', 'L', 'M', 'N'],
 ['O', 'P', 'Q', 'R', 'S', 'T'],
 ['U', 'V', 'W', 'X', 'Y', 'Z']]

iter(characters):创建characters列表的迭代器。

islice(iterator,len):返回len=6迭代器的片段。Islice对象本身就是一个迭代器,因此,您需要将islice对象传递给list()以获取其内容。

传入range6可以通过以下方式获取:

代码语言:javascript
复制
In [2]: int(len(characters)/6)
Out[2]: 6
票数 1
EN

Stack Overflow用户

发布于 2013-01-12 01:25:17

基于itertools grouper配方

依赖于itertools.izip_longest和自身的增量或迭代器

代码语言:javascript
复制
>>> list(izip_longest(*[iter(characters)] * 6))
[(0, 1, 2, 3, 4, 5), (6, 7, 8, 9, 'A', 'B'), ('C', 'D', 'E', 'F', 'G', 'H'), ('I', 'J', 'K', 'L', 'M', 'N'), ('O', 'P', 'Q', 'R', 'S', 'T'), ('U', 'V', 'W', 'X', 'Y', 'Z')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14283354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档