首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:创建包含n个列表的列表的最快方法

Python:创建包含n个列表的列表的最快方法
EN

Stack Overflow用户
提问于 2011-04-02 04:24:00
回答 3查看 198.4K关注 0票数 103

所以我想知道如何最好地创建一个空白列表列表:

代码语言:javascript
运行
复制
[[],[],[]...]

由于Python在内存中使用列表的方式,这不起作用:

代码语言:javascript
运行
复制
[[]]*n

这确实创建了[[],[],...],但每个元素都是相同的列表:

代码语言:javascript
运行
复制
d = [[]]*n
d[0].append(1)
#[[1],[1],...]

类似列表理解的东西是有效的:

代码语言:javascript
运行
复制
d = [[] for x in xrange(0,n)]

但这使用了Python VM进行循环。有没有办法使用隐式循环(利用它是用C编写的)?

代码语言:javascript
运行
复制
d = []
map(lambda n: d.append([]),xrange(0,10))

这实际上更慢。:(

EN

Stack Overflow用户

发布于 2013-04-02 20:02:32

这里有两种方法,一种甜蜜而简单(和概念上的),另一种更正式,可以在读取数据集后在各种情况下扩展。

方法1:概念性

代码语言:javascript
运行
复制
X2=[]
X1=[1,2,3]
X2.append(X1)
X3=[4,5,6]
X2.append(X3)
X2 thus has [[1,2,3],[4,5,6]] ie a list of lists. 

方法2:形式化和可扩展性

另一种优雅的方式是将列表存储为不同编号的列表-它从文件中读取。(这里的文件有数据集序列) Train是一个数据集,比如说有50行和20列。即。Train给我csv文件的第一行,train1给我第二行,依此类推。我感兴趣的是将有50行的数据集分离为一个列表,除了第0列,这是我在这里解释的变量,所以必须从原始的训练数据集中删除,然后一个接一个地扩大列表-即列表的列表。下面是实现这一点的代码。

请注意,我在内部循环中从"1“读取,因为我只对解释性变量感兴趣。我在另一个循环中重新初始化X1=[],否则X2.append([0:(len(train)-1)])将一遍又一遍地重写X1 -此外,它还会更有效地利用内存。

代码语言:javascript
运行
复制
X2=[]
for j in range(0,len(train)):
    X1=[]
    for k in range(1,len(train[0])):
        txt2=train[j][k]
        X1.append(txt2)
    X2.append(X1[0:(len(train[0])-1)])
票数 12
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5518435

复制
相关文章

相似问题

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