GVKun编程网logo

在Python中将多维列表转换为一维列表(在python中将多维列表转换为一维列表)

15

在本文中,您将会了解到关于在Python中将多维列表转换为一维列表的新资讯,同时我们还将为您解释在python中将多维列表转换为一维列表的相关在本文中,我们将带你探索在Python中将多维列表转换为一

在本文中,您将会了解到关于在Python中将多维列表转换为一维列表的新资讯,同时我们还将为您解释在python中将多维列表转换为一维列表的相关在本文中,我们将带你探索在Python中将多维列表转换为一维列表的奥秘,分析在python中将多维列表转换为一维列表的特点,并给出一些关于Python 2.7创建多维列表、python – 切片多维列表、python – 迭代多维列表?、python 建立多维列表的实用技巧。

本文目录一览:

在Python中将多维列表转换为一维列表(在python中将多维列表转换为一维列表)

在Python中将多维列表转换为一维列表(在python中将多维列表转换为一维列表)

像这样的多维列表l=[[1,2],[3,4]]可以通过执行转换为一维列表sum(l,[])。谁能解释一下这是怎么回事?

响应者说,该技术只能用于“平化”二维列表-
不适用于较高的多维列表。但是,如果重复的话,确实如此。例如,如果A是3D列表,则sum(sum(A())[[]),[])将A展平为一维列表。

答案1

小编典典

sum使用+运算符将一个序列加在一起。例如sum([1,2,3]) == 6。第二个参数是一个可选的起始值,默认为0 sum([1,2,3],10) == 16

在您的示例中,它确实[] + [1,2] + [3,4]+2个列表连接在一起。因此结果是[1,2,3,4]

空列表是第二个参数,sum因为如上所述,默认值是将sum其添加为0(即0 + [1,2] + [3,4]),这将导致 不支持+的操作数类型:“
int”和“ list”

这是帮助的相关部分sum

sum(sequence [,start])-> value

返回一个数字序列(非字符串)的总和加上参数“ start”的值(默认为0)。

注意

如wallacoloo所言,这 不是
拉平任何多维列表的通用解决方案。由于上述行为,它仅适用于一维列表。

更新资料

有关扁平化1级嵌套的方法,请参阅itertools页面上的以下食谱:

def flatten(listOfLists):    "Flatten one level of nesting"    return chain.from_iterable(listOfLists)

请注意,配方返回一个itertools.chain对象(可迭代),而另一个问题的答案返回一个generator对象,因此,list如果您要完整列表而不是对其进行遍历,则需要在调用中包装这两个对象。例如list(flatten(my_list_of_lists))

Python 2.7创建多维列表

Python 2.7创建多维列表

在Python中,我想要一种直观的方式来创建3维列表。

我想要一个(一个n个)列表。因此对于n = 4,它应该是:

x = [[[],[],[]],[[],[]]]

我试过使用:

y = [n*[n*[]]]    
y = [[[]]* n for i in range(n)]

两者似乎都在创建参考的副本。我还尝试过列表构建器的简单应用,但收效甚微:

y = [[[]* n for i in range(n)]* n for i in range(n)]
y = [[[]* n for i in range(1)]* n for i in range(n)]

我也尝试过使用循环迭代地构建数组,但没有成功。我也尝试过这个:

y = []
for i in range(0,n):
    y.append([[]*n for i in range(n)])

有没有更简单或更直观的方法?

python – 切片多维列表

python – 切片多维列表

我有一个可变长度多维,如下所示:

listD = [[[[53,54],[129,130]]],[[[51,51],[132,132]]],[[[39,39],[144,144]],[[53,[146,146]],[[54,[130,[[[54,53],129]]],[[[52,52],132]]]
    ]

我需要在每个最里面的列表中挑选出第一个元素.输出应如下所示:

outlist=[[[[53,54]]],51]]],39]],53]]],52]]]
    ]

我试图切片使用0和:s,我没有得到正确的列表.如何在python中执行此操作?

我在列表中出错了.我已经编辑了这份清单.对困惑感到抱歉.

解决方法

尝试使用嵌套列表理解:

[[[x[0]] for x in y] for y in listD]

步骤:

查看listD中的每个嵌套行,看看它与outlist的对应关系.您可以看到每个1深列表的第一个元素都包含在outlist中

>>> [x[0] for x in listD[0]] 
[[53,54]]
>>> [x[0] for x in listD[1]] 
[[51,51]]
>>> [x[0] for x in listD[2]] 
[[39,[53,54]]

但是在outlist中,这些列表然后嵌套在另一个1元素列表中,因此将这些列表中的每一个包装到它自己的列表中,例如,下一个元素将是:

>>> [[x[0] for x in listD[3]]]
[[[39,[54,54]]]

然后为listD的每个索引扩展它:

[[[x[0]] for x in listD[i]] for i in range(len(listD))]

然后通过将listD [i]替换为listD的元素来进一步简化:

[[[x[0]] for x in y] for y in listD]

python – 迭代多维列表?

python – 迭代多维列表?

对不起,如果显而易见的问题,我是初学者,我的谷歌也失败了.

我正在编写一个搜索文本以进行头韵的工具.我有一个多维列表:[[e,a,c,h],[w,o,r,d],[l,k,s],i,e],[这个]]

我想要的是迭代主列表中的项目,检查每个项目的[0]索引,看它是否等于FOLLOWING项目的[0]索引.

def alit_finder(multi_level_list):
  for i in multi_level_list:
   if i[0] == multi_level_list[i + 1][0] and i != multi_level_list[-1]:
    print i,multi_level_list[i + 1]

我得到一个TypeError:只能将列表(不是“int”)连接到列表.

所以[i 1]不是指示’索引等于i加1的项的正确方法’.但是,[1]也不起作用:这似乎返回列表中任何两个单词在单词[0]上具有相同字母的单词.

如何在此声明中引用“以下项目”?

ETA:谢谢大家!我很感激你的时间和解释,我在这里做错了什么!

解决方法

在正常的for-each循环中,您一次只能访问一个元素:

for x in lst:
    print("I can only see",x)

所以你需要迭代索引,例如:

for i in range(len(lst) - 1):
    print("current =",lst[i],"next =",lst[i+1])

顺便说一句,作为惯例,使用名为i的变量来总是引用循环索引是个好主意.在您的原始代码中,部分混淆是您首先尝试使用i作为列表元素,然后作为索引使用它,并且它不能同时使用!

python 建立多维列表

python 建立多维列表

今天用到在网上没有找到合适的思路,于是自己动手写了一个,作为记录。

1 dpa = []
2 dpb = []
3 dpc = []
4 for i in range(21):
5     dpa.append(0)
6 for i in range(21):
7     dpb.append(dpa)
8 for i in range(21):
9     dpc.append(dpb)

 

关于在Python中将多维列表转换为一维列表在python中将多维列表转换为一维列表的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Python 2.7创建多维列表、python – 切片多维列表、python – 迭代多维列表?、python 建立多维列表等相关知识的信息别忘了在本站进行查找喔。

本文标签: