如果它是 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 的数组的主要内容,如果未能解决你的问题,请参考以下文章