Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Python 3.x_Numpy - Fatal编程技术网

如何确保两个Python列表中的元素数量相等?

如何确保两个Python列表中的元素数量相等?,python,list,python-3.x,numpy,Python,List,Python 3.x,Numpy,我有两个清单,每个清单的长度约为160万项。每个项目要么为空,要么包含一个包含1个或多个字符串的嵌入列表。不幸的是,其中一个列表中缺少数据,因此这两个列表不对应。我想将这些列表的内容写入一个平面数据帧,但如果数组长度不同,则无法写入 我已经尝试过一种for循环,当它检测到一个列表中的项目与另一个列表中的项目长度不同时,它会将NAs嵌入其中一个列表中,但是这种方法需要很长时间,因为它必须循环160万个项目 是否有一种更快、更优雅的方法来实现这一点,而不是通过for循环方法。让整个过程运行大约需要6

我有两个清单,每个清单的长度约为160万项。每个项目要么为空,要么包含一个包含1个或多个字符串的嵌入列表。不幸的是,其中一个列表中缺少数据,因此这两个列表不对应。我想将这些列表的内容写入一个平面数据帧,但如果数组长度不同,则无法写入

我已经尝试过一种for循环,当它检测到一个列表中的项目与另一个列表中的项目长度不同时,它会将NAs嵌入其中一个列表中,但是这种方法需要很长时间,因为它必须循环160万个项目

是否有一种更快、更优雅的方法来实现这一点,而不是通过for循环方法。让整个过程运行大约需要6个小时

编辑:下面是我的意思的一个例子:

list_A = [[''],[''],[''],['a'],['a','b','c'],[''],['d']]
list_B = [[''],[''],[''],['a'],[''],[''],['']]
我希望将NAs放在列表B的空列表中,使列表B看起来像:

list_A = [[''],[''],[''],['a'],['a','b','c'],[''],['d']]
list_B = [[''],[''],[''],['a'],['NA','NA','NA'],[''],['NA']]

在您的示例中,相应的项目要么相同,要么
列表\u B
中的项目应替换为与
列表\u a
中的项目长度相同的
NA
。此生成器表达式应足够快:

(a if a==b else len(a)*['NA'] for a,b in zip(list_A,list_B)) 

numpy.array.size应该很快。这是一个与numpy相关的问题吗?如果是的话,就这样标记。@idjaw我不知道,但我添加了标记以防有用。我不确定你的确切意思。这两个列表的元素数是否相同?当你说“每个项目……都有一个内嵌的列表”时,你是说“每个项目……都是一个列表”吗?如果没有,请举例说明。“NA”是在列表中还是在列表项中?请给出一个简短的示例,以及所需的结果。由于这些是列表列表,具有不同长度的子列表,因此这不适合
numpy
。不管你喜欢与否,你都必须遍历列表中的所有项目。你不能把迭代推进到编译代码中去。这就是它,完美地解决了我的示例问题!我只是注意到我的例子不正确。列表B应该是数字而不是字母(也就是说,有些不同的东西),所以我只是想对你的代码稍加修改,我会把它放在这里,以防它能帮助其他人:(B if len(a)==len(B)else len(a)*['NA']表示a,B在zip中(列表a,列表B))