我想从两个列表中返回不在另一个列表中的值:
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) 我很好奇你是否可以从列表列表中删除重复项并将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.
我最近发现了一种叫做动态编程的技术,我偶然发现了一个我无法弄清楚的问题.您在开头就会得到一个参数列表,您需要对它进行总结,就像您正在削减它一样.如果列表只有一个元素,则不要求它.如果它有更多,你总结元素并以各种可能的方式切割它.因此,如果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)
感谢您的时间和任何答案!
有没有快速的方法可以找出 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 )。它可能需要递归,但我不知道身体应该是什么样子。
谢谢。