【问题标题】:How do I join elements of tuples of a list through list comprehension如何通过列表理解加入列表元组的元素
【发布时间】:2023-04-06 20:48:01
【问题描述】:

我有一个包含三个元素的元组的列表,其中包含电子邮件数据。

email_data = [('jbd', 'email', '.com'), ('my_jbd', 'my_site', '.com')]

我想要实现的是加入每个元组的三个元素并获取电子邮件 像'jbd@email.com'这样的地址,为此我使用列表理解如下:

email_list = [  (y+'@', y) [i!=0] for x in result for i, y in enumerate(x) ]
print( email_list ) # ['jbd@', 'email', '.com', 'my_jbd@', 'my_site', '.com']

我真正需要的是这样的列表 -> ['jbd@email.com', 'my_jbd@my_site.com']。
因为,我是 Python 的初学者,所以我不知道如何加入这些元组 列表理解中的元素并获取包含电子邮件数据的列表。请指导我。

【问题讨论】:

    标签: python tuples conditional-statements list-comprehension


    【解决方案1】:

    使用format 方法。

    email_list = ["{}@{}{}".format(*t) for t in email_data]
    

    【讨论】:

    • 也许 f-string 版本也可能有用。所以也许[f"{username}@{domain}{suffix} for username, domain, suffix in email_data]
    • 如果解压后的元素被乱序使用,我会更愿意为它们命名,比如{3}@{1}{2}.format(*t) 或类似的东西。如果没有更多上下文,我会使用哪一个可能取决于它是一周中的哪一天:)
    【解决方案2】:

    用途:

    email_data=[i[0]+"@"+i[1]+i[2] for i in email_data]
    print(email_data)
    

    【讨论】:

      【解决方案3】:

      这应该可行:

      [f'{el[0]}@{el[1]}{el[2]}' for el in email_data]
      

      我们在这里所做的是使用格式字符串来传递我们在列表推导中命名为“el”的每个元组。

      【讨论】:

        【解决方案4】:

        试试:

        email_data = [('jbd', 'email', '.com'), ('my_jbd', 'my_site', '.com')]
        for i in email_data :
            s = i[0] + '@'+''.join(i[1:])
            print(s)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-27
          • 2017-11-28
          • 2015-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多