我试图通过翻译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/

10-12 16:58
查看更多