我从一个空列表开始,并提示用户输入一个短语。我想将每个字符添加为数组的单个元素,但我这样做的方式会创建一个列表列表。
myList = []
for i in range(3):
myPhrase = input("Enter some words: ")
myList.append(list(myPhrase))
print(myList)
我明白了:
Enter some words: hi bob
[['h', 'i', ' ', 'b', 'o', 'b']]
Enter some words: ok
[['h', 'i', ' ', 'b', 'o', 'b'], ['o', 'k']]
Enter some words: bye
[['h', 'i', ' ', 'b', 'o', 'b'], ['o', 'k'], ['b', 'y', 'e']]
但我想要的结果是:
['h', 'i', ' ', 'b' ... 'o', 'k', 'b', 'y', 'e']
答案 0 :(得分:9)
.append()
的参数不会以任何方式扩展,提取或迭代。如果您希望将列表中的所有单个元素添加到另一个列表,则应使用.extend()
。
>>> L = [1, 2, 3, 4]
>>> M = [5, 6, 7, 8, 9]
>>> L.append(M) # Takes the list M as a whole object
>>> # and puts it at the end of L
>>> L
[0, 1, 2, 3, [5, 6, 7, 8, 9]]
>>> L = [1, 2, 3, 4]
>>> L.extend(M) # Takes each element of M and adds
>>> # them one by one to the end of L
>>> L
[0, 1, 2, 3, 5, 6, 7, 8, 9]
答案 1 :(得分:3)
我认为你以错误的方式解决问题。您可以将字符串存储为字符串,然后根据需要在字符时间之后迭代它们:
foo = 'abc'
for ch in foo:
print ch
输出:
a
b
c
将它们存储为字符列表似乎是不必要的。