【问题标题】:Python: looping through a list?Python:循环列表?
【发布时间】:2016-08-02 10:47:46
【问题描述】:

我有一个清单,例如:

mylist=["a", "b", "end"]

我想将 mylist 的所有值附加到不同的列表(new_list),并将字符串“字母”添加到除最后一个之外的 new_list 的每个值(值:end)

到目前为止,我有一个将字符串“字母”添加到所有值的 for 循环:

new_list = []

for x in my_list:
   new_list.append(x + " letter")

产生:

("a letter", "b letter", "end letter")

我想要:

("a 字母", "b 字母", "end")

【问题讨论】:

  • 为什么列表中包含'end'?简单地让列表终止可以说会更清晰。

标签: python list loops


【解决方案1】:

我们必须跳过最后一个元素,为此使用列表切片;使用列表推导也会派上用场。试试这个:

mylist   = ['a', 'b', 'end']
new_list = [x + ' letter' for x in mylist[:-1]] + [mylist[-1]]

它按预期工作:

new_list
=> ['a letter', 'b letter', 'end']

【讨论】:

    【解决方案2】:

    这最好通过列表推导和切片来实现:

    >>> new_list = [s + ' letter' for s in mylist[:-1]] + mylist[-1:]
    >>> new_list
    ['a letter', 'b letter', 'end']
    

    【讨论】:

    • 嗯,所有这些临时列表...避免临时列表 - [s + ' letter' if i < len(mylist)-1 else s for i, s in enumerate(mylist)] 但同样丑陋。
    【解决方案3】:

    您可以将" letter" 添加到列表中除最后一个之外的每个元素,然后只需添加最后一个。

    new_list = [x + " letter" for x in my_list[:-1]] + [my_list[-1]]
    

    【讨论】:

      猜你喜欢
      • 2016-02-25
      • 1970-01-01
      • 2021-11-13
      • 2015-05-07
      • 2021-02-24
      • 2018-10-26
      • 2020-05-29
      • 2019-04-29
      相关资源
      最近更新 更多