(ep是len为58的字符串列表。)
字符串上的调用列表应该给出字符列表。但为什么在这种情况下它只看到最后一个字符串? (注意,与this question不同,每个元素都是唯一的。)
for s in ep:
ll = list(s)
ll
['3', '5', '0', ' ', 'U', '.', 'S', '.', ' ', '1', '0', '1', '0']`
在使用print()的循环中,它会看到所有元素,但不会修改任何元素:
for s in ep:
ll = list(s)
print(s)
350 U.S. 1
350 U.S. 3
这是另一个有效的打印循环:
for e in ep:
print([e])
['350 U.S. 1']
['350 U.S. 3']
另一个没有它只看到最后一个元素:
for e in ep:
ep5 = [e.strip("'").replace(' ', ",")]
ep5
['350,U.S.,1010']
最后:
for e in ep:
ep11 = e.split()
print(ep11)
['350', 'U.S.', '1']
['350', 'U.S.', '3']
...<snip>...
['350', 'U.S.', '1010']
但....
ep11
['350', 'U.S.', '1010']
列表推导和枚举(省略)都可以看到所有元素,但不是简单的for循环,至少没有print()。我知道print()会添加一个换行符,但我看不出它是如何解释这种行为的。任何人都可以向我解释这个吗? Ubuntu 16.04上的Python 3.5.2。谢谢。
答案 0 :(得分:2)
您反复覆盖相同的ll
变量。只保留最后写入的值。
如果您希望结果是字符串变量列表的列表,那么创建一个新列表并在每次迭代时添加它:
characterLists = []
for s in strings:
characterLists.append(list(s))
print(characterLists)
更好的是,只需使用列表理解:
characterLists = [list(s) for s in strings]
print(characterLists)