在本文中,您将会了解到关于在Python中将多维列表转换为一维列表的新资讯,同时我们还将为您解释在python中将多维列表转换为一维列表的相关在本文中,我们将带你探索在Python中将多维列表转换为一
在本文中,您将会了解到关于在Python中将多维列表转换为一维列表的新资讯,同时我们还将为您解释在python中将多维列表转换为一维列表的相关在本文中,我们将带你探索在Python中将多维列表转换为一维列表的奥秘,分析在python中将多维列表转换为一维列表的特点,并给出一些关于Python 2.7创建多维列表、python – 切片多维列表、python – 迭代多维列表?、python 建立多维列表的实用技巧。
本文目录一览:- 在Python中将多维列表转换为一维列表(在python中将多维列表转换为一维列表)
- Python 2.7创建多维列表
- 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中,我想要一种直观的方式来创建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 – 切片多维列表
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 – 迭代多维列表?
我正在编写一个搜索文本以进行头韵的工具.我有一个多维列表:[[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 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 建立多维列表
今天用到在网上没有找到合适的思路,于是自己动手写了一个,作为记录。
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 建立多维列表等相关知识的信息别忘了在本站进行查找喔。
本文标签: