如何通过添加它们使列表列表中的所有列表具有相同的长度

时间:2012-09-23 08:50:04

标签: python python-2.7

我有一个嵌套列表,其中包含填充字符串的列表。我想要做的是让这个嵌套中的每个列表与该嵌套中最长的可用列表的长度相同。这听起来很容易,但我的尝试失败了(我对编程完全不熟悉),我找不到一个足以解决我问题的答案问题。

首先,我确定最长列表的持续时间:

maxSS7 = max(len(i) for i in ssValues7))

然后,我使用for循环将每个列表扩展一定量的'null',如果它与最长列表的长度不同:

for row in ssValues7:
    if row < len(maxSS7):
        row.extend(['null' * (len(maxSS7) - len(row))])

我将行延长'null'*最长列表和当前列表之间的差异。没有错误发生,但遗憾的是它似乎对我的嵌套列表没有任何作用。

有人可以告诉我我的错误吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

表达式'null' * (len(maxSS7) - len(row))创建一个可能非常长的字符串。

使用

row.extend('null' for _ in xrange(maxSS7 - len(row)))

代替。生成器表达式允许您避免创建额外的列表对象以扩展row

>>> ['null' * 2]
['nullnull']
>>> ['null' for _ in xrange(2)]
['null', 'null']

.extend调用本身从未到达,因为if语句正在测试错误的东西;将其更改为:

 if len(row) < maxSS7:

maxSS7是一个数字(最长列表的长度);要求这个数字的长度不是你想要的。

答案 1 :(得分:3)

问题出在以下几行:

if row < len(maxSS7):

您正在将列表 row整数 len(maxSS7)进行比较。它每次评估为False。将其更改为:

maxLen = max(map(len, myList))
for row in myList:
    if len(row) < maxLen:
        row.extend(...)

Martijn Peters指出another problem with your code in his answer

答案 2 :(得分:0)

您可以这样做

CURLOPT_PROXYPORT