小编The*_*337的帖子

如何在python中比较两个列表并返回不匹配

我想从两个列表中返回不在另一个列表中的值:

bar = [ 1,2,3,4,5 ]
foo = [ 1,2,3,6 ]

returnNotMatches( a,b )
Run Code Online (Sandbox Code Playgroud)

会回来的

[[ 4,5 ],[ 6 ]]
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
3
解决办法
3万
查看次数

使用列表解析从列表列表中删除重复项

我很好奇你是否可以从列表列表中删除重复项并将uniques作为列表返回.我在尝试这个:

def do_list( lists ):
    res = [ [ one for one in temp if one not in res ] for temp in lists ]
    return res
Run Code Online (Sandbox Code Playgroud)

例如,如果:

lists = [ [ "a","b","c" ],[ "d","a" ],[ "c","a","f" ] ]
Run Code Online (Sandbox Code Playgroud)

结果应该是:

[ "a","b,"c","d","f" ]    
Run Code Online (Sandbox Code Playgroud)

但它给了我错误,我在分配之前参考变量res.

python list-comprehension

2
推荐指数
1
解决办法
837
查看次数

动态编程没有给出正确的答案

我最近发现了一种叫做动态编程的技术,我偶然发现了一个我无法弄清楚的问题.您在开头就会得到一个参数列表,您需要对它进行总结,就像您正在削减它一样.如果列表只有一个元素,则不要求它.如果它有更多,你总结元素并以各种可能的方式切割它.因此,如果list有n个元素,那么只有n-1种方法可以删除它.图片将解释:

选择

我首先要总结所有可用的部分,我期望结果20(11 + 9)(甚至认为正确的答案是9),但我认为这将是一个良好的开端.但我的代码返回37号,我不知道为什么.我究竟做错了什么?

summ = 0

def Opt( n ):
    global summ

    if len( n ) == 1:
        return 0
    else:
        summ += sum( n )
        for i in range( 1,len( n ) ):
            summ += Opt( n[ :i ] ) + Opt( n[ i: ] )

        return summ

print( Opt( [ 1,2,3 ] ) )
Run Code Online (Sandbox Code Playgroud)

感谢您的时间和任何答案!

python dynamic-programming

1
推荐指数
1
解决办法
107
查看次数

检查布尔二维列表中的两点是否相连

有没有快速的方法可以找出 2D 布尔区域上的两个点是否相连,并且您只能在值为 True 的正方形上上下左右移动?假设您有以下 6x6 2D 列表:

二维阵列

在代码中,那就是:

bool2DList = [6][6]
bool2DList = { True,  True,  False, False, True,  True,
               False, True,  True,  False, True,  True,
               False, True,  True,  False, False, True,
               False, False, False, False, False, True,
               False, False, False, False, True,  True,
               False, True,  True,  True,  True,  True }
Run Code Online (Sandbox Code Playgroud)

绿色方块的值为 True,蓝色方块的值为 False。我正在考虑函数(它可能需要递归),其中您将一个 2D 列表作为参数,与几个点的元组(坐标)列表一起放置,最后是一个特殊点的元组,它可以有标题像这样:

def FindWay( bool2DList,listOfPoints,specialPointCoord )
Run Code Online (Sandbox Code Playgroud)

在此示例中,特殊点是坐标为 5;1 的点 P。让我们想象一下您将从那些特殊点开始步行。如果不踩到蓝色方块,你能到达哪些点?在此示例中,只有点 P4 和 P5 (输出可以是这些点的坐标,即 0;5 和 5;3 )。它可能需要递归,但我不知道身体应该是什么样子。

谢谢。

python multidimensional-array

0
推荐指数
1
解决办法
1153
查看次数