Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在for循环中使用if语句进行单行编码_Python_One Liner - Fatal编程技术网

Python 在for循环中使用if语句进行单行编码

Python 在for循环中使用if语句进行单行编码,python,one-liner,Python,One Liner,我需要帮助缩短成一行以下代码 for i in objects: if i not in uniq: uniq.append(i) 我这样做只是为了挑战,不打算保留它。最简单的一种方法是使用集合: uniq=set(对象) 如果您确实需要列表,您当然可以从集合中创建一个列表: uniq=list(集合(对象)) 输出 [9, 1, 2, 3, 4, 5, 15, 12, 33] 您可以使用列表理解,尽管出于许多原因,这是一个坏主意 uniq=[] objects

我需要帮助缩短成一行以下代码

for i in objects:
    if i not in uniq: 
        uniq.append(i)

我这样做只是为了挑战,不打算保留它。

最简单的一种方法是使用
集合:

uniq=set(对象)
如果您确实需要列表,您当然可以从集合中创建一个列表:

uniq=list(集合(对象))
输出

[9, 1, 2, 3, 4, 5, 15, 12, 33]

您可以使用列表理解,尽管出于许多原因,这是一个坏主意

uniq=[]
objects= [9,9,1,2,3,4,5,5,9,9,15,12,33]
[uniq.append(i) for i in objects if i not in uniq]
print(uniq)
产出:

[9, 1, 2, 3, 4, 5, 15, 12, 33]
首先,从风格/可读性的角度来看,阅读它令人困惑,它是“隐式而非显式”的,它不会为FOR循环增加任何价值,除了将所有内容放在一行上,没有任何真正的好处


其次,很难修改,它仅限于一个操作,现在可能可以工作,但如果需要添加第二个操作,则必须重构整个操作

您有没有特别尝试过什么?uniq=set(Object)
如何?你还没有说代码应该做什么,或者你的代码有什么问题。不,使用set会扰乱列表的顺序。如果你想把列表重新排序到第一个列表的“顺序”中,那么你可以在它上面抛出一个
sorted
sorted(list(set(objects)),key=lambda x:objects.index(x))
这正是我要找的,谢谢!啊,这是个坏主意,别这么做@达夫·迪杜:看。
[9, 1, 2, 3, 4, 5, 15, 12, 33]