【问题标题】:Append two strings as a single element to a Python list将两个字符串作为单个元素附加到 Python 列表
【发布时间】:2013-07-05 06:09:10
【问题描述】:

我想将两个字符串作为单个元素附加到 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

【问题讨论】:

    标签: list python-2.7 append element


    【解决方案1】:

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

    for letter in lowerCase[0]:
        newList.append([letter, i])
        i += 1
    

    【讨论】:

      【解决方案2】:

      你需要的是

      newList.append([letter, i])
      

      【讨论】:

        【解决方案3】:

        看看你当前的代码:

        [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)]
        

        【讨论】:

          猜你喜欢
          • 2018-09-03
          • 1970-01-01
          • 2019-05-07
          • 1970-01-01
          • 1970-01-01
          • 2020-10-29
          • 1970-01-01
          • 2023-02-15
          • 2015-07-07
          相关资源
          最近更新 更多