0

我想将两个字符串作为单个元素附加到 Python 列表中。这是我的问题的简化示例:

lowerCase = [['a', 'b', 'c', 'd', 'e']]
newList = []

# Append two pieces of data as a single element
i = 1;
for letter in lowerCase[0]:
    [newList.append(letter), newList.append(i)]
    i += 1

print newList
print len(newList)

我得到什么:

['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]
10

我想要的是:

[['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]]
5
4

3 回答 3

2

问题出在for循环中。应该这样做:

for letter in lowerCase[0]:
    newList.append([letter, i])
    i += 1
于 2013-07-08T00:23:06.930 回答
2

你需要的是

newList.append([letter, i])
于 2013-07-08T00:23:16.997 回答
0

看看你当前的代码:

[newList.append(letter), newList.append(i)]

这一行从这两个方法调用的输出中创建了一个列表。您实际上并没有使用该列表,因此您基本上是在做:

newList.append(letter)
newList.append(i)

您希望将两个元素同时附加到一个可迭代对象中:

newList.append([letter, i])  
newList.append((letter, i))  # Tuples are faster to create, as they're immutable

此外,您通常不需要i手动创建和递增变量。只需使用enumerate

newList = []

for index, letter in enumerate(lowerCase[0], start=1):
    newList.append((letter, index))

或者使用列表理解:

newList = [(letter, index) for index, letter in enumerate(lowerCase[0], start=1)]
于 2013-07-08T00:29:33.237 回答