如何在Python中反转列表中的某些元组(用户输入列表的索引)?



列表中有元组:

a=[(1.51, 0.0), (0.93, 0.0), (0.57, 0.0), (0.35, 0.0), (166.0, 0.0), (5.92, 0.0), (15.36, 0.0), (9.89, 0.0), (30.2, 0.0), (5.2, 0.0), (13.31, 0.82)]

现在用户将给出列表的索引作为输入,我想只在索引处反转元组

#b=Input the index positions as list
b=[7,10] # positions at which to reverse the tuple

所以在这个例子中,我只想在索引7和10处反转元组。最有效的方法是什么?我能想到的就是用两个嵌套的for循环,这是非常低效的。

使用内置的reversed:

a = [(1.51, 0.0), (0.93, 0.0), (0.57, 0.0), (0.35, 0.0), (166.0, 0.0), (5.92, 0.0), (15.36, 0.0), (9.89, 0.0), (30.2, 0.0), (5.2, 0.0), (13.31, 0.82)]
b = [7,10]
for index in b:
a[index] = tuple(reversed(a[index]))

我认为你需要

a = [j[::-1] if i in b else j for i,j in enumerate(a)]

可以使用列表切片。

= [(1.51, 0.0), (0.93, 0.0), (0.57, 0.0), (0.35, 0.0), (166.0, 0.0), (5.92, 0.0), (15.36, 0.0), (9.89, 0.0), (30.2, 0.0), (5.2, 0.0), (13.31, 0.82)]

输出= [b: [0]] + [[1]: b [0]: 1] + [b [1] + 1:]

打印(输出)

[(1.51, 0.0), (0.93, 0.0), (0.57, 0.0), (0.35, 0.0), (166.0, 0.0), (5.92, 0.0), (15.36, 0.0), (13.31, 0.82), (5.2, 0.0),(30.2, 0.0)]

最新更新