Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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列表镜像值_Python_List Comprehension - Fatal编程技术网

Python列表镜像值

Python列表镜像值,python,list-comprehension,Python,List Comprehension,我试图通过列表理解来解决以下问题,但我无法使它工作。我将向您展示如何使用循环和列表理解解决问题 因此,我有一个列表,在一个范围(6)内可以有0到6个元素,当我对其应用我的函数时,我想更改这些值,如下所示: l = [0, 1, 2, 3, 4, 5] mirror = [5, 4, 3, 2, 1, 0] 我不想仅仅将数组旋转180度,但实际上我想替换这些值。例如,我的列表现在如下所示: l = [2, 5] 那么l_倒排列表应该如下所示: l_inverted = [3, 0] 我想出了

我试图通过列表理解来解决以下问题,但我无法使它工作。我将向您展示如何使用循环和列表理解解决问题

因此,我有一个列表,在一个范围(6)内可以有0到6个元素,当我对其应用我的函数时,我想更改这些值,如下所示:

l = [0, 1, 2, 3, 4, 5]
mirror = [5, 4, 3, 2, 1, 0]
我不想仅仅将数组旋转180度,但实际上我想替换这些值。例如,我的列表现在如下所示:

l = [2, 5]
那么l_倒排列表应该如下所示:

l_inverted = [3, 0]
我想出了一个解决这个问题的常规方法,但自从我开始学习Python以来,我就更喜欢列表理解

l = [0, 3, 5]
mirror = [5, 4, 3, 2, 1, 0]
i = 0
for element in l:
    l[i] = mirror[element]
    i += 1
这实际上颠倒了l列表。以下是我使用列表理解的方法:

l = [3, 5]
mirror = [5, 4, 3, 2, 1, 0]
for element in l:
    print(element)
    l = [mirror[element] if x==element else x for x in l]
>> l = [0, 3, 5]
>> mirror = [5, 4, 3, 2, 1, 0]
>> l_inverted = [mirror[x] for x in l]
>> l_inverted
[5, 2, 0]
这个很好用。 直至:

因此,它将5替换为0,2替换为3,两个5(新的5)都将变为0。显然,我不想这样


我应该坚持使用有效的解决方案,还是有一种通畅的方法可以通过列表理解来解决?我一直在努力练习列表理解,但它还没有完全进入我的大脑。非常感谢。

如果您想将其作为列表:

l = [3, 5]
mirror = [5, 4, 3, 2, 1, 0]
for element in l:
    print(element)
    l = [mirror[element] if x==element else x for x in l]
>> l = [0, 3, 5]
>> mirror = [5, 4, 3, 2, 1, 0]
>> l_inverted = [mirror[x] for x in l]
>> l_inverted
[5, 2, 0]

你淹死在一勺水里,想带我们一起去。 您使用了不好的命名约定,使您的简单问题变得难以理解

orig = [0, 1, 2, 3, 4, 5]
orig_rev = l[::-1]

selector = [0, 3, 5]

result = [orig_rev[i] for i in selector]
print(result )  # [5, 2, 0]

根据前两个示例,您似乎在根据一些基础查找每个列表值的补码,类似于。您可以将基数硬编码为5或其他任何数字,也可以假设它是列表中的最大数字并进行计算。以下是针对后者的解决方案:

概念

<this complement> = <max value in list> - <this value>
[5, 2, 3, 1, 0]
结果

<this complement> = <max value in list> - <this value>
[5, 2, 3, 1, 0]

l=list(reversed(l))
有什么问题?“2,5”如何转化为“3,0”?等等,你真的想把
5
减去每个元素吗?对不起,似乎不够清楚。2转换为3,因为如果我们看完整的l列表和完整的镜像列表,它们的索引是相同的。如果有意义的话……否则我“我试着用不同的方式来解释:迪克,我怎么想不出这个,但这正是我所想的。谢谢。对不起,我是新手,我尽力做到尽可能准确。