小编Swi*_*ift的帖子

迭代数组

我有一系列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或类似方式来完成此操作.如果可以使用"板载工具",我真的不喜欢导入东西,但我是否应该使用它们来解决这个问题?

python arrays swap python-3.x

8
推荐指数
1
解决办法
4万
查看次数

返回列表中某个元素的所有位置而不进行递归,但使用列表生成器

我们被要求在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)

我知道有!! 和其他类似的功能,但是可以只使用列表生成器并使其更简单吗?

recursion haskell

2
推荐指数
1
解决办法
291
查看次数

对于x_i + x_k的k≠i求和

在Python中我有一个numpy Xxi的数组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)

python arrays numpy

2
推荐指数
1
解决办法
256
查看次数

标签 统计

arrays ×2

python ×2

haskell ×1

numpy ×1

python-3.x ×1

recursion ×1

swap ×1