【问题标题】:how to create a list of duplicated items between two lists using list comprehension?如何使用列表理解在两个列表之间创建重复项列表?
【发布时间】:2021-02-22 02:51:04
【问题描述】:

该脚本应该通过用户输入创建一个字符串元素列表,这些元素是人们的姓名,如果他们在 vip 列表中,则向他们打招呼。我尝试在名称列表和贵宾列表之间创建一个包含重复元素的列表,以便将新列表存储在变量 temp 中,以便可以打印出问候语。但它没有用。

我的尝试: #!/usr/bin/python3

mylist = input("Enter list of names separated by comma: ").split(",")
vip = ['Tom', 'Howard', 'Alice', 'Peter', 'Maria']

temp = [x for x in vip if x in mylist]

print([f"Hello {myvar}!" for myvar in temp])

用户输入'Alice, Robert, Maria, Peter, Jen' 的当前行为:

['Hello Alice!']

预期行为:

['Hello Alice!', 'Hello Maria!', 'Hello Peter!']

【问题讨论】:

  • split(', ') 而不是 split(',')
  • 欢迎来到 SO!您可能想在这里使用正则表达式re.split(r" *, *", mylist)(这些名称在, 上拆分后有空格!),但是,请始终记住falsehoods programmers believe about names。这打破了"Sammy Davis, Jr."
  • 您也可以在拆分值后调用strip()

标签: python python-3.x list list-comprehension


【解决方案1】:

跟进马克 M 的评论:

mylist = [x.strip() for x in input("Enter list of names separated by comma: ").split(",")]

【讨论】:

    【解决方案2】:

    您只需对代码进行少量更改。一种是拆分(“,”)。 另一个是列表理解。

    mylist = input("Enter list of names separated by comma: ").split(", ")
    
    vip = ['Tom', 'Howard', 'Alice', 'Peter', 'Maria']
    
    temp = [name for name in mylist if name in vip]
    
    print([f"Hello {myvar}!" for myvar in temp])
    
    

    给予

    ['Hello Alice!', 'Hello Maria!', 'Hello Peter!']
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多