我有一份清单清单.我想从它们中删除前导和尾随空格.该strip()方法返回不带前导和尾随空格的字符串副本.单独调用该方法不会进行更改.通过这个实现,我得到了一个'array index out of bounds error'.在我看来,列表中的每个列表(0-len(网络)-1)和"ay"对于这些列表中的每个字符串都会有"一个x"(0-len(networks [x])又名我和j应该准确地映射到合法的,索引而不是超出范围?   
i = 0
j = 0
for x in networks:
    for y in x:
    networks[i][j] = y.strip()
        j = j + 1
     i = i + 1
Tim*_*ker 13
j迭代完第一个列表后,您忘记重置为零.
这就是为什么你通常不在Python中使用显式迭代的原因之一 - 让Python为你处理迭代:
>>> networks = [["  kjhk  ", "kjhk  "], ["kjhkj   ", "   jkh"]]
>>> result = [[s.strip() for s in inner] for inner in networks]
>>> result
[['kjhk', 'kjhk'], ['kjhkj', 'jkh']]
这会生成一个新列表:
>>> x = ['a', 'b ', ' c  ']
>>> map(str.strip, x)
['a', 'b', 'c']
>>> 
编辑:改为string使用内置类型 ( str)时无需导入。
你不需要i, j自己计算,只需枚举,看起来你也不会增加i,因为它不在循环中而且j不在内部大多数循环中,这就是为什么你有一个错误
for x in networks:
    for i, y in enumerate(x):
        x[i] = y.strip()
另请注意,您不需要访问网络,但访问"x"并替换值将起作用,因为x已经指向 networks[index]
| 归档时间: | 
 | 
| 查看次数: | 21686 次 | 
| 最近记录: |