列表中有元组:
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)]