我正在为背包算法创建一个解密函数。我是Python编程新手。我需要找到一个数组中的值在另一个数组中出现的位置,为这些值编制索引,将索引值设置为“1”,并将其他列表中没有等效值的值设置为“0”
假设:
privkey = [2,3,6,13,27,52]
searchList = [3,6]
由于searchList中的[3,6]出现在privkey[1]和privkey[2]位置,我希望代码在新列表中将这些索引设置为二进制“1”。所以新值应该是newList=[0,1,1,0,0,0]
到目前为止,我尝试的是:
newList = []
for i in privkey:
if (privkey[i]==searchList[i]):
newList = append(privkey.index(i)) # should yield newList = [1,2]
print(newList)
else:
print("none")
我真的不知道如何使用索引将privkey中的值设置为“1”值。任何帮助都将不胜感激。谢谢
使用列表理解有一个简单的解决方案,但是由于它需要在
searchList
上进行许多成员资格测试,因此应该首先创建一个集合:test
x in search_set
返回一个布尔值,使用int
函数将其转换为1或0如果
privkey
的长度为m,searchList
的长度为n,则此解在O(m+n)时间内运行,并使用O(m+n)空间。没有集合的解是O(mn)时间和O(m)空间,对于较大的输入,这将相当慢您可以使用列表理解:
https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
相关问题 更多 >
编程相关推荐