Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回关联二进制向量列表的补码_Python_List - Fatal编程技术网

Python 返回关联二进制向量列表的补码

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,

我必须解决这个练习:

您能否实现函数并将两个关联向量(在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, 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
而我