【问题标题】:how to append a FOR loop value into a list如何将 FOR 循环值附加到列表中
【发布时间】:2015-04-27 21:50:19
【问题描述】:

您好,我正在尝试将值附加到列表中,虽然这里有各种示例,但这是不同的,我使用 FOR 循环将所有值放入列表中,如果找到正确的名称在“每个”中,我想将“每个”附加到一个新列表中。这是一个例子

for each in lines:
            if names in each:
                print(names)
                print(each)
                if len(newnames)<=3:                   
                    newnames.append((each))

                elif len(newnames)>3:                
                    newnames = newnames[:2]
            print(newnames) 

线条看起来像这样

['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6 ', '梅根|8', '梅根|9']

Names 只是一个列表,其中每个名称只有一个副本。希望这些信息足以让您找到答案,因为我完全被难住了。

干杯。

【问题讨论】:

  • 输出是这样的:-['alex', 'jake', 'josh', 'megan']??
  • 你想做什么?
  • 名字是 = ['alex', 'jake', 'josh', 'megan']

标签: python list if-statement for-loop append


【解决方案1】:

如果您只想要行中的名称并使用字符串 split() 方法从行项中拆分名称。

例如

>>> names = set()
>>> l = ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
>>> for i in l:
...     names.add(i.split("|")[0])
... 
>>> print names
set(['josh', 'jake', 'alex', 'megan'])
>>> 

Python 方式:

>>> l = ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
>>> set([i.split("|")[0] for i in l])
set(['josh', 'jake', 'alex', 'megan'])
>>> 

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解了您的问题,但如果我理解了,那么您要做的是解析行列表中的字符串,然后检查解析后的名称是否出现在您的名称列表中。如果是这样,您希望将其附加到新列表中。

    如果您希望列表是唯一的,只需将其替换为一个集合(并用 add 附加),或者将 result = set(result) 添加到程序末尾。

    不管怎样,怎么样:

    result = []
    for each in lines:
        name = each.split('|')[0]
        if name in names:
            result.append(name)
    print result
    

    根据您的输入列表,这将给出结果:

    ['alex', 'jake', 'jake', 'jake', 'josh', 'josh', 'josh', 'megan', 'megan', 'megan']
    

    如果所有这些名字都在您的names 列表中。如果没有,它只会附加该列表中的那些名称。

    【讨论】:

      【解决方案3】:

      我同意 Vivek 的观点,并且我认为:

          if names in each:
      

      应该是

          if each in names:
      

      看起来好像您正在将列表与列表的元素进行比较。通常您执行相反的比较。您也不需要将值附加为元组,您可以简单地附加到列表中。看这个例子:

          lines=['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
          names=[l.split('|')[0] for l in ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']][:-4]
          newnames=[]
      
          for each in [l.split('|')[0] for l in lines]:
              if each in names:
                  print(names)
                  print(each)
                  if len(newnames)<=3:   
                      newnames.append(each)
      
                  elif len(newnames)>3:
                      newnames = newnames[:2]
                      print(newnames) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-25
        • 2020-04-25
        • 1970-01-01
        • 2022-11-20
        • 2020-07-26
        • 1970-01-01
        • 2019-08-04
        • 2021-01-16
        相关资源
        最近更新 更多