Python列表镜像值
我试图通过列表理解来解决以下问题,但我无法使它工作。我将向您展示如何使用循环和列表理解解决问题 因此,我有一个列表,在一个范围(6)内可以有0到6个元素,当我对其应用我的函数时,我想更改这些值,如下所示: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] 我想出了
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列表和完整的镜像列表,它们的索引是相同的。如果有意义的话……否则我“我试着用不同的方式来解释:迪克,我怎么想不出这个,但这正是我所想的。谢谢。对不起,我是新手,我尽力做到尽可能准确。