【问题标题】:How to apply any operation to the first element of each tuple如何对每个元组的第一个元素应用任何操作
【发布时间】:2019-11-23 11:13:46
【问题描述】:

x= [("fjiwc", 1539), ("fejnd3", 1349), ("ABC123", 1.3878)]

如何对每个元组的第一个元素应用任何操作?

【问题讨论】:

  • 你在使用 Python 吗?如果是这样,您应该迭代您的列表,而不是使用纯正则表达式。
  • 您的问题根本不依赖于正则表达式。您基本上需要知道如何将 any 操作应用于每个元组的第一个元素。这就是理解和ˋmapˋ的用途。
  • 您好。是的,我现在意识到这应该是我的问题。我会看看理解。

标签: python-3.x list tuples


【解决方案1】:

如果您只想知道哪些元组的第一个元素中有数字:

import re

x= [("fjiwc", 1539, 1.0), ("fejnd3", 1349, 2.0), ("ettfd3", 1.3878, 1.0)]

for elem in x: # for each tuple in x
    if re.search(r"\d", elem[0]): # search the first element of the tuple
        print(elem[0]) # print the element

打印:

fejnd3
ettfd3

如果您只想获取这些元素的列表,请使用列表推导

l = [elem[0] for elem in x if re.search(r"\d", elem[0])]

你最终得到:

['fejnd3', 'ettfd3']

或者如果你想根据元组的第一个元素是否包含数字来过滤元组列表,你只需要对上面的列表推导稍作改动即可:

l = [elem for elem in x if re.search(r"\d", elem[0])]

你最终得到:

[('fejnd3', 1349, 2.0), ('ettfd3', 1.3878, 1.0)]

【讨论】:

    【解决方案2】:

    已编辑:您可以将迭代器与正则表达式进行比较,如下所示:

    import re
    
    x = [("fjiwc", 1539, 1.0), ("fejnd3", 1349, 2.0), ("ettfd3", 1.3878, 1.0)]
    
    result = [i for i in x if re.search(r"\d", i[0])]
    
    print(result)
    

    这将导致给出这个输出:

    $ python test.py
    [('fejnd3', 1349, 2.0), ('ettfd3', 1.3878, 1.0)]
    

    【讨论】:

    • 您好,我不想修改元组!我已经编辑了这个问题,因为我不够清楚。抱歉!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2021-11-22
    • 1970-01-01
    • 2021-05-26
    • 2014-07-07
    • 1970-01-01
    相关资源
    最近更新 更多