Python 如何通过添加列表使列表列表中的所有列表具有相同的长度
我有一个嵌套列表,其中包含用字符串填充的列表。我试图做的是使这个嵌套中的每个列表与该嵌套中可用的最长列表的长度相同。这听起来很容易,但我的尝试失败了(我对编程一无所知),我找不到一个相对来说足以解决我问题的答案 首先,我确定最长列表的长度:Python 如何通过添加列表使列表列表中的所有列表具有相同的长度,python,python-2.7,Python,Python 2.7,我有一个嵌套列表,其中包含用字符串填充的列表。我试图做的是使这个嵌套中的每个列表与该嵌套中可用的最长列表的长度相同。这听起来很容易,但我的尝试失败了(我对编程一无所知),我找不到一个相对来说足以解决我问题的答案 首先,我确定最长列表的长度: maxSS7 = max(len(i) for i in ssValues7)) 然后,如果每个列表的长度与最长列表的长度不同,我使用for循环将每个列表扩展一定数量的“null”: for row in ssValues7: if row <
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))])
对于ssValues7中的行:
如果行
我将行扩展为“null”*最长列表和当前列表之间的差异。没有发生错误,但不幸的是,它似乎对我的嵌套列表没有任何作用
有人能告诉我我的错误吗?任何帮助都将不胜感激。表达式
'null'*(len(maxSS7)-len(row))
创建一个可能非常长的字符串
使用
相反。生成器表达式允许您避免仅为了扩展行而创建额外的列表对象
>>> ['null' * 2]
['nullnull']
>>> ['null' for _ in xrange(2)]
['null', 'null']
但是,.extend
调用本身永远不会到达,因为如果
语句测试的是错误的东西,那么您就可以调用;将其更改为:
if len(row) < maxSS7:
maxLen = max(map(len, myList))
for row in myList:
if len(row) < maxLen:
row.extend(...)
如果len(row)
maxSS7
是一个数字区域(最长列表的长度);问那个号码的长度不是你想要的。问题在于线路:
if row < len(maxSS7):
Martijn Peters指出。你可以这样做
maxLen = max(map(len, arr))
[row.extend(['null']*(maxLen - len(row))) for row in arr]
maxSS7
是最长的列表还是最长列表的长度?您没有在示例代码中定义它,但是您定义了maxList
。这只是我的一个愚蠢错误,它应该是maxList。我已经更新了您的示例变量名称以保持一致。这并没有解决问题,但感谢您注意到这个错误!谢谢你,这帮了大忙!
maxLen = max(map(len, arr))
[row.extend(['null']*(maxLen - len(row))) for row in arr]