Python 返回关联二进制向量列表的补码
我必须解决这个练习: 您能否实现函数并将两个关联向量(在Python中表示为二进制列表)作为参数并返回这两个向量的补码? es和(11001110)=1100 所以我有这样的情况:Python 返回关联二进制向量列表的补码,python,list,Python,List,我必须解决这个练习: 您能否实现函数并将两个关联向量(在Python中表示为二进制列表)作为参数并返回这两个向量的补码? es和(11001110)=1100 所以我有这样的情况: def AND(vector_a, vector_b): # insert your code here # these tests should return True if your code is correct print(AND([1, 1, 0, 0], [1, 1, 1, 0]) == [1,
def AND(vector_a, vector_b):
# insert your code here
# these tests should return True if your code is correct
print(AND([1, 1, 0, 0], [1, 1, 1, 0]) == [1, 1, 0, 0])
print(AND([1, 0, 0, 1, 0, 0, 1], [1, 1, 1, 0, 1, 0, 1]) == [1, 0, 0, 0, 0, 0, 1])
我的解决办法是:
def AND(va,vb):
lista = []
i = 0
while i<len(va):
if va[i] == 1 and vb[i]==1:
lista.append(1)
else:
lista.append(0)
i += 1
return lista
你能帮我解决这个问题吗?谢谢这里有一个干净的解决方案,隐藏列表理解和生成器表达式中的所有循环:
def AND(*vectors):
N = len(vectors[0]) # Get the length of the vectors
return [int(all(vec[i] for vec in vectors)) for i in range(N)]
all
函数检查所有向量的i
th元素是否为1(实际上不是0)。这将返回True
或False
。我们可以使用int
函数将其转换为1
或0
。下面是一个干净的解决方案,隐藏列表理解和生成器表达式中的所有循环:
def AND(*vectors):
N = len(vectors[0]) # Get the length of the vectors
return [int(all(vec[i] for vec in vectors)) for i in range(N)]
all
函数检查所有向量的i
th元素是否为1(实际上不是0)。这将返回True
或False
。我们可以使用int
功能将其转换为1
或0
。我建议您使用这些操作。因此,您可以对任意数量的列表执行此操作
a = [1, 0, 0, 1]
b = [0, 1, 1, 1]
c = [0, 0, 0, 1]
results = []
for val in zip(a, b, c):
results.append(int(all(val)))
print results
基本上,zip
所做的是,它根据列表中的元素的索引(列)对其进行压缩,您可以将其视为矩阵转置
所以a,b,c的压缩版本是
(1, 0, 0)
(0, 1, 0)
(0, 1, 0)
(1, 1, 1)
所有需要处理的值都打包在元组中。然后使用all
对这些项应用和操作,基本上all
检查容器的所有元素是否都是1
,如果只有一个0
,则返回false
,因此和满足要求
这就回来了,
False
False
False
True
但是您需要整数值,所以int(all(val))
有关any
和all
的更多信息:
我建议您在这些操作中使用。因此,您可以对任意数量的列表执行此操作
a = [1, 0, 0, 1]
b = [0, 1, 1, 1]
c = [0, 0, 0, 1]
results = []
for val in zip(a, b, c):
results.append(int(all(val)))
print results
基本上,zip
所做的是,它根据列表中的元素的索引(列)对其进行压缩,您可以将其视为矩阵转置
所以a,b,c的压缩版本是
(1, 0, 0)
(0, 1, 0)
(0, 1, 0)
(1, 1, 1)
所有需要处理的值都打包在元组中。然后使用all
对这些项应用和操作,基本上all
检查容器的所有元素是否都是1
,如果只有一个0
,则返回false
,因此和满足要求
这就回来了,
False
False
False
True
但是您需要整数值,所以int(all(val))
有关any
和all
的更多信息:
以下是您如何概括到目前为止所做的工作:
def AND(*vectors):
lista = []
i = 0
while i<len(vectors[0]):
# add a temporary variable to check
# if all i elements are ones
all_ones = True
for v in vectors:
all_ones = all_ones and v[i] == 1
if all_ones:
lista.append(1)
else:
lista.append(0)
i += 1
return lista
def和(*向量):
lista=[]
i=0
而我以下是你如何概括到目前为止所做的工作:
def AND(*vectors):
lista = []
i = 0
while i<len(vectors[0]):
# add a temporary variable to check
# if all i elements are ones
all_ones = True
for v in vectors:
all_ones = all_ones and v[i] == 1
if all_ones:
lista.append(1)
else:
lista.append(0)
i += 1
return lista
def和(*向量):
lista=[]
i=0
而我