【问题标题】:Is it possible to delete a repetitive things of an element in a list?是否可以删除列表中元素的重复内容?
【发布时间】:2018-04-02 18:16:50
【问题描述】:

我有一个从 MySQL 服务器查询的列表,其中包含类似于下面示例的内容,但其中包含更多元素。由于某些原因,它有额外的逗号和括号。

[(datetime.datetime(2013, 1, 1, 0, 1, 14),), (datetime.datetime(2013, 1, 1, 1, 33, 50),)]

有没有办法消除会产生的特定括号和逗号

[datetime.datetime(2013, 1, 1, 0, 1, 14), datetime.datetime(2013, 1, 1, 1, 33, 50)]

当我打印列表中显示的第一个元素时

(datetime.datetime(2013, 1, 1, 0, 1, 14),)

我希望它在哪里

datetime.datetime(2013, 1, 1, 0, 1, 14)

我似乎不知道在哪里寻找这个解决方案,甚至不知道如何搜索这个问题。有什么建议吗?

【问题讨论】:

  • 看起来你有一个元组列表,你只想打印第一个元素。假设您的查询结果存储在变量myResult 中,您可以这样做:print(myResult[0][0]) 或遍历所有结果:for result in myResult: print(result[0])
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。特别是,发布问题代码:您向我们展示的内容没有输出。
  • @pault 太棒了!现在我有不同的输出。知道这是怎么发生的。就像我只打电话给print(myResult) 一样,它会打印所有的 datetime.datetime

标签: python list


【解决方案1】:

您的查询似乎返回了 listtuples:

myResult = [
    (datetime.datetime(2013, 1, 1, 0, 1, 14),),
    (datetime.datetime(2013, 1, 1, 1, 33, 50),)
]

您可以通过以下方式访问第一个元组的第一个元素:

print(myResult[0][0])
#datetime.datetime(2013, 1, 1, 0, 1, 14)

这里第一个[0]指的是列表myResult的索引0,第二个[0]指的是元组myResult[0]的索引0。

或者您可以修改myResult 使用列表推导来获取第一个元素:

print([result[0] for result in myResult])
#[datetime.datetime(2013, 1, 1, 0, 1, 14), datetime.datetime(2013, 1, 1, 1, 33, 50)]

这不是错误,而是显示问题。它显示为(some_value,) 而不是(some_value) 的原因是因为最后没有,,你就不会有tuple,而是一个生成器表达式。

在此处阅读更多信息:Python tuple vs. generator

【讨论】:

    【解决方案2】:

    它返回一个元组列表,每个元组都包含您要查询的内容。您只查询了一个字段,因此您的每个元组都包含 1 个项目。为了解决这个问题,我会使用一个简单的列表理解:

    flattened = [x[0] for x in result]
    

    result 是您的原始列表。

    【讨论】:

      【解决方案3】:

      看起来您只需要通过获取每个列表中的第一个元素来清理您的列表。

      使用您的示例列表:

      dirty = [(datetime.datetime(2013, 1, 1, 0, 1, 14),), (datetime.datetime(2013, 1, 1, 1, 33, 50),)]
      

      你想取每个列表中的第一个元素:

      clean = [i[0] for i in dirty] 
      

      调用:

      clean[0]
      

      产生:

      datetime.datetime(2013, 1, 1, 0, 1, 14)
      

      【讨论】:

        猜你喜欢
        • 2013-10-14
        • 2020-01-19
        • 2011-12-04
        • 2020-08-02
        • 2018-05-02
        • 2014-07-06
        • 1970-01-01
        • 2017-10-01
        • 2020-11-02
        相关资源
        最近更新 更多