我有一系列bools,现在我想将这些条目换成数字.
False => 0
True => 1
Run Code Online (Sandbox Code Playgroud)
我写了两段不同的代码,我想知道哪一个更好,为什么.这不是关于实际解决问题,而是关于学习.
arr = [[True,False],[False,True],[True,True]]
for i,row in enumerate(arr):
for j,entry in enumerate(row):
if entry:
arr[i][j] = 1
else:
arr[i][j] = 0
print(arr)
Run Code Online (Sandbox Code Playgroud)
第二种方法:
arr = [[True,False],[False,True],[True,True]]
for i in range(len(arr)):
for j in range(len(arr[i])):
if arr[i][j]:
arr[i][j] = 1
else:
arr[i][j] = 0
print(arr)
Run Code Online (Sandbox Code Playgroud)
我读到有些方法可以通过导入itertools或类似方式来完成此操作.如果可以使用"板载工具",我真的不喜欢导入东西,但我是否应该使用它们来解决这个问题?
我们被要求在Haskell中自己编写一个函数,当给定一个列表并且某个元素返回一个新列表时,该列表包含该列表中该元素的有序位置.
我已经尝试了很长一段时间了,但是我现在使用的那个仍然使用递归,任务说我们不应该使用递归.
allPositionsOf :: (Eq a) => a -> [a] -> [Int]
allPositionsOf e es = [i | i <- [0 .. (length es - 1)], IsAtPos e es i]
where
isAtPos :: (Eq a) => a -> [a] -> Int -> Bool
isAtPos e (x:xs) 0
|x == e = True
|otherwise = False
isAtPos e (x:xs) i = findAtPosition xs e (i - 1)
Run Code Online (Sandbox Code Playgroud)
我知道有!! 和其他类似的功能,但是可以只使用列表生成器并使其更简单吗?
在Python中我有一个numpy X值xi的数组F,我想创建一个数组,其中每个条目是所有其他条目的总和X.
然后F看起来像这样:
F= np.array[(x2+x3+...+xn),(x1+x3+...+xn),...,(x1+x2+...+xn-1)]
Run Code Online (Sandbox Code Playgroud)
这是使用for循环:
import numpy as np
X=np.array[a,b,c,d,e,f,g]
F=np.zeros_like(X)
for i,f in enumerate(F):
f = sum(np.delete(i,F))
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有明确使用for循环的情况下做一些numpy魔法?
如果等式变得更复杂,那该怎么办?
F= np.array[(x2+x3+...+xn)^2+x1,(x1+x3+...+xn)^2+x2,...,(x1+x2+...+xn-1)^2+xn]
Run Code Online (Sandbox Code Playgroud)
有了一个for循环就可以了
import numpy as np
X=np.array[a,b,c,d,e,f,g]
F=np.zeros_like(X)
for i,f in enumerate(F):
f = sum(np.delete(i,F))**2+X[i]
Run Code Online (Sandbox Code Playgroud)