我试图通过翻译R代码来了解更多关于Python功能的信息,同时注意不同的方法。 R串联中有一个回收规则,如果字符串彼此成倍,则评估程序将回收较小的对象以匹配较大的对象的长度。这是一个例子:
lttrs <- c("A", "B", "C")
lbl <- "pct"
users <- c(1,2)
如果我想将这三个对象结合起来得到
"Apct1" "Bpct1" "Cpct1" "Apct2" "Bpct2" "Cpct2"
。我可以将最后一个对象users
重复为第一个对象长度的两倍,R将找出其余的对象:user_indx <- rep(users, each=length(lttrs))
paste0(lttrs, lbl, user_indx)
#[1] "Apct1" "Bpct1" "Cpct1" "Apct2" "Bpct2" "Cpct2"
我已经能够翻译
rep(users, each=length(lttrs))
调用:import numpy as np
lttrs = ['A', 'B', 'C']
lbl = ['pct']
users = [1,2]
print np.repeat(users, len(lttrs))
[1 1 1 2 2 2]
我正在努力从那里前进。
最佳答案
听起来像您想要的是itertools.product,它给出了可迭代的乘积。
from itertools import product
lttrs = ['A', 'B', 'C']
lbl = ['pct']
users = [1,2]
combine = []
for p in product(lttrs, lbl, map(str, users)):
combine.append(''.join(p))
关于python - Python中的回收操作类似于R向量化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33896309/