根据Python中另一个列表的位置选取列表的位置

91zkwejq  于 2022-12-21  发布在  Python
关注(0)|答案(6)|浏览(197)

我是一个Python初学者,也是Stackoverflow的新手,似乎找不到这个问题的解决方案,我已经找了好几个星期了。这是一个任务,我们不能使用内置的Python函数。
我想找到一个项目在列表A中的位置,然后从列表B中选择相同的位置。列表A中的项目不应该等于零。完成后,我必须将相应的值添加到B中。例如:

A = [0,0,1,1]
B = [25,9,8,3]

A应得出位置2,3,因此B等于8,3 8+3 = 11
以下是我目前所尝试的方法

binary = [0,1,1,0,0,0]
decimal = [32,16,8,4,2,1]
output_decimal = []
for position in range(0, len(binary)):
    if binary[position] !=0:
        print(position)
jk9hmnmh

jk9hmnmh1#

我觉得这就是你想要的。

index = 0
sums = 0
binary = [0,1,1,0,0,0]
decimal = [32,16,8,4,2,1]

for value in binary:
    if value == 1:
        sums += decimal[index]

    index += 1

print(sums)
zwghvu4y

zwghvu4y2#

如果您不需要这些位置,可以使用以下位置

result = sum([y for x, y in zip(binary, decimal) if x])

在列表解析中,每一对二进制和十进制的位置都会被迭代,如果二进制不为零,你只保留十进制的位置,然后你对所有保留的项求和。

4si2a6ki

4si2a6ki3#

import numpy as np

binary = np.array([0,1,1,0,0,0])

decimal = np.array([32,16,8,4,2,1])

values = np.where(binary == 1)

output_decimal = decimal[values[0]]

print(output_decimal)

此答案通过使用Numpy包完成。

zc0qhyus

zc0qhyus4#

我想你已经明白了,在你的代码中,简单地在你创建的单独列表中注册位置,然后把它加起来

binary = [0,1,1,0,0,0]
decimal = [32,16,8,4,2,1]
output_decimal = []
for position in range(0, len(binary)):
    if binary[position] !=0:
        output_decimal.append(decimal[position])
# to add everything
print(sum(output_decimal))

输出为您提供:第一个月

iaqfqrcu

iaqfqrcu5#

所以要找到一个列表中某个项的位置,并从另一个列表中选择相同的位置,你可以使用一个循环来遍历第一个列表中的项,然后在循环中检查该项是否不等于零,如果不等于零,那么你可以将第二个列表中的相应值添加到输出列表中。

binary = [0,1,1,0,0,0]
decimal = [32,16,8,4,2,1]
output_decimal = []

# Iterate over the items in binary
for i, b in enumerate(binary):
    # Check if the item is not equal to zero
    if b != 0:
        # If it is not, add the corresponding value in decimal to the output list
        output_decimal.append(decimal[i])

# Print the output list
print(output_decimal)

所以要计算输出列表中所有值的总和,只需使用内置的sum()函数,如下所示:

total = sum(output_decimal)

如果你不想使用sum,那么你可以使用下面的代码:

total = 0
for value in output_decimal:
    total += value
rdrgkggo

rdrgkggo6#

我认为在这种情况下使用enumerate可能是个好主意:

result = sum([B[i] for i, val in enumerate(A) if val != 0])
print(result)

相关问题