首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将函数应用于元组中每个元组中特定位置的元素?

如何将函数应用于元组中每个元组中特定位置的元素?
EN

Stack Overflow用户
提问于 2014-03-03 08:26:33
回答 3查看 118关注 0票数 2

我有这个元组;

代码语言:javascript
复制
Tuple = ( ('AA', 'BB', datetime.datetime(2014, 3, 2, 0, 0) ), ('CC', 'DD', datetime.datetime(2014, 3, 2, 0, 1) )  )

我想把它变成这样;

代码语言:javascript
复制
Output= ( ('AA', 'BB', '2014-3-2 00:00:00' ), ('CC', 'DD', '2014-3-2 00:00:00'  )

每个元组的第三个元素将转换为表示日期时间的字符串。这可以通过这样的Tuple[0][2].strftime('%Y-%m-%d %H:%M:%S')来完成

我遇到的问题是如何将这个函数strftime()应用于这个元组中每个元组的第三个元素?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-03 08:29:38

你必须再次生成元组。您可以通过以下列表理解来完成此操作。

代码语言:javascript
复制
>>> [(a, b, date.strftime('%Y-%m-%d %H:%M:%S')) for (a, b, date) in Tuple]
[('AA', 'BB', '2014-03-02 00:00:00'), ('CC', 'DD', '2014-03-02 00:01:00')]

如果最终结果需要是元组,请使用tuple()。这种方法使用生成器表达式,但基本工作方式相同:

代码语言:javascript
复制
>>> tuple((a, b, date.strftime('%Y-%m-%d %H:%M:%S')) for (a, b, date) in Tuple)
(('AA', 'BB', '2014-03-02 00:00:00'), ('CC', 'DD', '2014-03-02 00:01:00'))
票数 4
EN

Stack Overflow用户

发布于 2014-03-03 08:33:12

列出@msvalkon提到的理解,或者使用maplambda

代码语言:javascript
复制
In [731]: map(lambda tup: (tup[0], tup[1], tup[2].strftime('%Y-%m-%d %H:%M:%S')), Tuple)
Out[731]: [('AA', 'BB', '2014-03-02 00:00:00'), ('CC', 'DD', '2014-03-02 00:01:00')]
票数 2
EN

Stack Overflow用户

发布于 2014-03-03 09:41:00

这里有一个发生器函数,它能做到这一点。

代码语言:javascript
复制
import datetime

def convert_nested(nested_tuples):
    for a, b, time in nested_tuples:
        yield (a, b, time.strftime('%Y-%m-%d %H:%M:%S'))

if __name__ == '__main__':
    nested_tuples = (('AA', 'BB', datetime.datetime(2014, 3, 2, 0, 0)),
                     ('CC', 'DD', datetime.datetime(2014, 3, 2, 0, 1)))

    output = tuple(convert_nested(nested_tuples))

    print(output)

或者更简单地说是一种生成理解。

代码语言:javascript
复制
import datetime

if __name__ == '__main__':
    nested_tuples = (('AA', 'BB', datetime.datetime(2014, 3, 2, 0, 0)),
                     ('CC', 'DD', datetime.datetime(2014, 3, 2, 0, 1)))

    output = tuple((a, b, time.strftime('%Y-%m-%d %H:%M:%S')) 
                   for a, b, time in nested_tuples)

    print(output)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22141877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档