是否可以删除列表中元素的重复内容?

时间:2018-04-02 18:16:50

标签: python list

我有一个我从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)

我似乎无法知道在哪里寻找此解决方案或如何搜索此问题。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

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

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

result是您的原始列表。

答案 1 :(得分:2)

您的查询似乎返回list tuple s:

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而是dirty = [(datetime.datetime(2013, 1, 1, 0, 1, 14),), (datetime.datetime(2013, 1, 1, 1, 33, 50),)] 生成器表达式。

在此处阅读更多内容:Python tuple vs. generator

答案 2 :(得分:1)

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

使用您的示例列表:

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

您想要获取每个列表中的第一个元素:

clean[0]

通话:

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

产生

Rectangle r = new Rectangle();
r.setWidth(150);
r.setHeight(150);

Group root = new Group(r, e, boh);

Scene scene = new Scene(root, 1000, 1000);

scene.setOnMouseDragged(ev -> {
    r.setX(ev.getX() - r.getWidth() / 2);
    r.setY(ev.getY() - r.getHeight() / 2);
});