如果它是 2 的幂或 0 的幂,我如何在 python 中附加一个值为 1 的数组

Posted

技术标签:

【中文标题】如果它是 2 的幂或 0 的幂,我如何在 python 中附加一个值为 1 的数组【英文标题】:How do I append an array a value of 1 if it's a power of 2 or 0 otherwise in python 【发布时间】:2022-01-23 01:11:59 【问题描述】:

给定一个整数数组,确定每个整数是否是 2 的幂,其中 2 的幂是 [1,2,4,8,16,32,...] 如何在数组中附加 1 的值如果它是 2 或 0 的幂,否则。

#!/bin/python3

import math
import os
import random
import re
import sys

# The function is expected to return an INTEGER_ARRAY.
# The function accepts INTEGER_ARRAY arr as parameter.
def isPower(arr):
    # Write your code here


if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')
    arr_count = int(input().strip())
    arr = []
    for _ in range(arr_count):
        arr_item = int(input().strip())
        arr.append(arr_item)
    result = isPower(arr)
    fptr.write('\n'.join(map(str, result)))
    fptr.write('\n')
    fptr.close()

【问题讨论】:

你有一个抽象的问题陈述和一个代码块。两者之间有什么联系?也许您对代码有特定的疑问? 看起来像家庭作业。到目前为止你尝试了什么? # Write your code here?如果您努力解决您的问题,我们可以为您提供帮助。 欢迎来到 Stack Overflow。看来您的实际问题是“我如何判断一个数字是否是 2 的幂?”,因为您清楚地知道如何将值附加到列表(我们确实将其称为数组)我假设您可以找到一种方法来追加 0 而不是数字,一旦您发现 if 这样做是合适的。请阅读How to Ask 并在第一次尝试research 之后提出您的实际问题 看起来最初的问题是将列表转换为整数。 Get a list of numbers as input from the user。然后完成isPower。 How to check if a given number is a power of two? 这是我正在处理的代码的另一个版本。另一个版本不是 isPower(arr),而是 poweroftwo(n)。我能够解决另一个问题,但无法解决 ispower(arr)。 【参考方案1】:

要确定这个数字是否是 2 的幂,请计算其二进制表示的设置位数 - 如果是 1,那么你有一个 2 的幂,如果它更多,那么它不是 2 的幂.

def isPower(arr):
    result = []
    for n in arr:
        if bin(n).count("1") == 1: # n is a power of two
            result.append(1)
        else:
            result.append(0)
    return result

同样可以做得更紧凑:

def isPower(arr):
    result = []
    for n in arr:
        result.append(int(bin(n).count("1") == 1))
    return result

int 在布尔值上调用,True 返回 1,False 返回 0,

【讨论】:

它可以通过列表理解更加紧凑return [int(bin(n).count("1") == 1 for n in arr] 我知道我哪里做错了。我没有在我的代码中使用 bin。

以上是关于如果它是 2 的幂或 0 的幂,我如何在 python 中附加一个值为 1 的数组的主要内容,如果未能解决你的问题,请参考以下文章

&^作用

2的幂?代码有啥问题

2的幂判别

如何迅速判断一个数是不是2的幂3的幂4的幂?

如何检查一个数字是不是是2的幂

如何检查一个数字是不是是2的幂