我有一个关联数组$assoc,需要在此上下文中将其缩减为字符串
$OUT = "<row";
foreach($assoc as $k=>$v) $OUT.= " $k=\"$v\"";
$OUT.= '/>';
Run Code Online (Sandbox Code Playgroud)
如何以优雅的方式做同样的事情,但使用array_reduce()
与array_walk()功能相近的算法(性能较低,易读性较差),
array_walk( $row, function(&$v,$k){$v=" $k=\"$v\"";} );
$OUT.= "\n\t<row". join('',array_values($row)) ."/>";
Run Code Online (Sandbox Code Playgroud)
丑陋的解决方案array_map()(并再次join()作为减速器):
$row2 = array_map(
function($a,$b){return array(" $a=\"$b\"",1);},
array_keys($row),
array_values($row)
); // or
$OUT ="<row ". join('',array_column($row2,0)) ."/>";
Run Code Online (Sandbox Code Playgroud)
PS:显然PHP array_reduce()不支持关联数组(为什么??).
我正在尝试编写一些代码来计算两组间隔A - B之间的差异,间隔端点是整数,但我很有希望得到有效的解决方案,任何建议都会得到很多赞赏的例子:[(1,4) ),(7,9)] - [(3,5)] = [(1,3),(7,9)]
这是迄今为止我尝试过的最好的(两个列表已经排序)
class tp():
def __repr__(self):
return '(%.2f,%.2f)' % (self.start, self.end)
def __init__(self,start,end):
self.start=start
self.end=end
z=[tp(3,5)] #intervals to be subtracted
s=[tp(1, 4)),tp(7, 9), tp(3,4),tp(4,6)]
for x in s[:]:
if z.end < x.start:
break
elif z.start < x.start and z.end > x.start and z.end < x.end:
x.start=z.end
elif z.start < x.start and z.end > x.end:
s.remove(x)
elif z.start > x.start and z.end < x.end:
s.append(tp(x.start,z.start))
s.append(tp(z.end,x.end))
s.remove(x)
elif z.start > x.start and z.start < …Run Code Online (Sandbox Code Playgroud) 例如:
asking="hello! what's your name?"
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
asking.strip("!'?")
Run Code Online (Sandbox Code Playgroud) 我是初学python用户,我在python2.7和python3.4.3上运行了以下代码
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
alpha = 1
n = 100
u = stats.uniform(0,1)
F_inverse = lambda u: 1/alpha*np.log(1/(1-u))
v = np.array(map(F_inverse, u.rvs(n)))
print(v)
fig, ax = plt.subplots(1,1)
stats.probplot(v, (1,), dist='expon', plot=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在python2上我得到一个像这样的好数组:
array([ 2.29133808e+00, 1.63236151e+00, 6.77776227e-01,
3.33668250e-01, 1.77830890e+00, 3.06193068e-01,
2.10677775e+00, 1.30525788e-01, 2.97056775e-01,
...
1.31463775e+00, 1.41840428e-03, 8.60594737e-01,
1.80644880e-01])
Run Code Online (Sandbox Code Playgroud)
在python3上,我得到这个:
array(<map object at 0x7f8aab6f3ef0>, dtype=object)
Run Code Online (Sandbox Code Playgroud)
如果我改变了这个:
v = np.array(map(F_inverse, u.rvs(n)))
Run Code Online (Sandbox Code Playgroud)
至
v = list(map(F_inverse, u.rvs(n)))
Run Code Online (Sandbox Code Playgroud)
它在两者上工作正常,但我想要使用数组.有没有办法让这个与np.array一起使用?
Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。
假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y:
y = x + 1
# Or it could be in a function:
def calc_y(an_x):
return an_x + 1
Run Code Online (Sandbox Code Playgroud)
现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:
xs = [1, 3, 5]
for x in xs:
y = x + 1
Run Code Online (Sandbox Code Playgroud)
while或者,如果有其他逻辑来计算值序列,我可以使用循环x:
def next_collatz(value):
if value % 2 == 0:
return value // 2
else:
return 3 * value + 1
def collatz_from_19():
x = 19
while x != 1:
x …Run Code Online (Sandbox Code Playgroud) 在Python 3中,reduce()已经移动到functools.reduce()并且显然最好使用列表推导或普通循环以获得更好的可读性.
我想打印列表中所有元素的XOR'ed值.
# My implementation with functools
from functools import reduce
print(reduce(lambda a, b: a^b, [1, 3, 2, 3, 4, 4, 5, 2, 1]))
Run Code Online (Sandbox Code Playgroud)
我有这个:
# My implementation without functools
def XOR(x):
ans = 0
for i in x:
ans = ans ^ i
return ans
print(XOR([1, 3, 2, 3, 4, 4, 5, 2, 1]))
Run Code Online (Sandbox Code Playgroud)
如何在不编写更多功能版本的代码reduce()?
(请提供Python 3中的参考或代码,如果有的话.)
我发现本教程在python中使用lambda.在尝试执行第3个示例时,我发现结果与教程中的结果不同.我99%肯定我的代码是正确的,但在这里它仍然是.
my_list = [2,9,10,15,21,30,33,45]
my_new_list = filter(lambda x: x % 3 == 0, my_list)
print(my_new_list)
Run Code Online (Sandbox Code Playgroud)
结果是:
<filter object at 0x004F39F0>
要记住的事情:
[9, 15, 21, 30, 33, 45]据我所知,它在Python 3.4+中不起作用; 我更好奇为什么它不起作用,并且寻找一种平等的方式来做这个,有或没有lambda.
我对使用python进行函数式编程感兴趣,并且正在阅读Mary Rose Cook的博客文章函数式编程的实用介绍。
显然,它是用python 2编写的,如下所示:
name_lengths = map(len, ["Mary", "Isla", "Sam"])
print name_lengths
# => [4, 4, 3]
Run Code Online (Sandbox Code Playgroud)
在Python 3中产生以下结果:
<map object at 0x100b87a20>
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
如何从dict列表中删除空dict为,
{
"ages":[{"age":25,"job":"teacher"},
{},{},
{"age":35,"job":"clerk"}
]
}
Run Code Online (Sandbox Code Playgroud)
我是python的初学者.提前致谢.
我在字符串中有一个1和0的块:
1111110000111111
1110110110110111
1101010110101011
1011100110011101
0001111111111011
1000110111110111
0100010011110000
0110000001111110
0111000000110110
0000100010010100
1110110011000111
1101111111100011
1011100110000011
1101010111100001
1110110110111101
1111110000111111
Run Code Online (Sandbox Code Playgroud)
我想转置它,好像它是一个矩阵 - 但保持在字符串中.
在我开始编写嵌套for循环之前,有一种更简单的方法吗?