Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-不同长度的列表列表_Python_Arrays_List - Fatal编程技术网

Python-不同长度的列表列表

Python-不同长度的列表列表,python,arrays,list,Python,Arrays,List,我需要创建一个包含两个列表的列表。 差不多 biglist = [list1,list2] 与 其中,list1和list2具有不同的长度,并且是从文件导入的 我是这样做的: biglist = [] list1 = #...taken from file. I checked this and it poduces a list exactly how I want it to be: [1,2,3] biglist.append(list1) 同样,对于list2 但问题是我 bigli

我需要创建一个包含两个列表的列表。 差不多

biglist = [list1,list2]


其中,
list1
list2
具有不同的长度,并且是从文件导入的

我是这样做的:

biglist = []
list1 = #...taken from file. I checked this and it poduces a list exactly how I want it to be: [1,2,3]
biglist.append(list1)
同样,对于
list2

但问题是我

biglist = [array([1,2,3]),array([4,5,6,7,8])]
相对于

biglist = [[1,2,3],[4,5,6,7,8]]
我真的不想要
数组
的东西,我更喜欢简单的列表。
如何解决这个问题?

只需将您的
list1
list2
转换为
numpy.ndarray.tolist()
方法即可(这些名称确实令人困惑,因为它们是numpy数组,只是一条注释)

biglist = [list1.tolist(), list2.tolist()]
请尝试:

biglist.append(list(list1))
biglist.append(list(list2))
或者如果它们是numpy数组

biglist.append(list1.tolist())
biglist.append(list2.tolist())

似乎您的
biglist
是一个
numpy数组的列表。所以
通过这种方式将
numpy数组
转换为
列表
,以获得所需的输出

np.array(list_name).tolist()

  • 要创建包含所有元素的列表:
    new\u list=list1+list2

  • 创建包含两个列表的列表:
    new\u list=[list1,list2]

我想你想要第二个解决方案。请注意,列表中可以包含其他数据类型。一个列表可以包含
[“string”、10、[“另一个”、“列表”]、一个变量、更多内容]
,因此创建一个包含更多列表的新列表很容易。只需将每个所需对象作为一个项目

更新:我不知道这是否可行(以前从未使用过numpy),但值得一试:

new_list = [list(str(list1)[6:-1]), list(str(list2)[6:-1])]

有两种方法可以实现这一点:

本机功能:
列表(对象)

Numpy函数:
Numpy.ndarray.tolist()

虽然这个问题并不需要一个最佳方法,但这里有额外的2美分来评估two潜在方法。在这里,我们可以设计测试用例来评估每种方法的性能

import timeit

def test1():
    bigList = [list(list1), list(list2)]

def test2():
    bigList = [list1.tolist(), list2.tolist()]

timeit.timeit(stmt=t1, number=1000)
timeit.timeit(stmt=t2, number=1000)
timeit
操作的输出:

>>> timeit.timeit(stmt=t1, number=1000)
0.0024030208587646484

>>> timeit.timeit(stmt=t2, number=1000)
0.0007460117340087891``

您的
list1
list2
似乎是numpy数组。您可以先执行此操作:
list1=list.tolist()
list2=list2.tolist()
然后将它们附加到大列表使用扩展而不是附加请显示从文件解析列表的代码,因为在该代码中,列表被解析为numpy数组,而不是python list.tolist?那是什么python版本?listsIt没有这样的方法,
numpy.array
类型存在@ᴬᴶᵁᴾᴾᴬᴸ 我认为询问者明确表示这两个物体是lists@Mokshyam不,行动没有。仅仅因为变量名中有“list”,并不意味着它就是一个list。如果您查看文章的后半部分,列表显示为
数组([1,2,3])
。这是一个
numpy.array
,不是一个列表。
list1
list2
是导入的,因此当他这样做时,
biglist
具有他不想要的数组内容。这就是问题啊,我现在明白了,这很棘手。我想到的唯一解决办法是。。我将更新此答案。感谢您的更正,这是一个好答案,也是一个加号:)
   biglist = [list(list1), list(list2)]
   bigList = [list1.tolist(), list2.tolist()]
import timeit

def test1():
    bigList = [list(list1), list(list2)]

def test2():
    bigList = [list1.tolist(), list2.tolist()]

timeit.timeit(stmt=t1, number=1000)
timeit.timeit(stmt=t2, number=1000)
>>> timeit.timeit(stmt=t1, number=1000)
0.0024030208587646484

>>> timeit.timeit(stmt=t2, number=1000)
0.0007460117340087891``