第一个问题
我想知道如何在2D列表中使用.strip()函数,以便在列表中每个列表的每个元素中,可以删除字符串中无用的空格。
这是我在shell中的尝试:
>>> questions = [['1986 ',' Baby', 'Shaw ', ' Welcome'],['1976',' fJKC','cbv bv ',' byt']]
>>> [['1986 ',' Baby', 'Shaw ', ' Welcome'],['1976',' fJKC','cbv bv ',' byt']]
>>> for z in range(len(questions)):
for t in range(len(questions[z])):
questions[z].append(questions[z][t].strip())
>>> questions
>>> [['1986 ', ' Baby', 'Shaw ', ' Welcome', '1986', 'Baby', 'Shaw', 'Welcome'], ['1976', ' fJKC', 'cbv bv ', ' byt', '1976', 'fJKC', 'cbv bv', 'byt']]
但是,这不是我希望它返回的方式。我的预期结果是,在编写代码之后,问题等于:
>>> questions
>>> [['1986', 'Baby', 'Shaw', 'Welcome'], ['1976', 'fJKC', 'cbv bv', 'byt']]
答案 0 :(得分:4)
list.append
不会更改项目;使用list[i] = ...
更改项目。或list[:] = ...
更改所有项目。这是使用简单迭代和列表切片分配(list[:] = ...
)以使用列表理解替换现场项目的那个:
questions = [['1986 ',' Baby', 'Shaw ', ' Welcome'], ['1976',' fJKC','cbv bv ',' byt']]
for q in questions:
q[:] = [info.strip() for info in q]
# Alternatives
# q[:] = (info.strip() for info in q) # generator expression
# q[:] = map(str.strip, q) # `map` with unbound method `str.strip`
# question => [['1986', 'Baby', 'Shaw', 'Welcome'], ['1976', 'fJKC', 'cbv bv', 'byt']]
答案 1 :(得分:0)
您可以在嵌套的单行循环中轻松strip()
字符串。
questions = [[r.strip() for r in q] for q in questions]