Python中类似于R矢量化的循环操作
我试图通过翻译R代码来了解更多Python功能,同时注意不同的方法。R串联中有一个循环规则,如果字符串是彼此的倍数,则计算器将循环较小的对象以匹配较大对象的长度。下面是一个例子:Python中类似于R矢量化的循环操作,python,python-2.7,Python,Python 2.7,我试图通过翻译R代码来了解更多Python功能,同时注意不同的方法。R串联中有一个循环规则,如果字符串是彼此的倍数,则计算器将循环较小的对象以匹配较大对象的长度。下面是一个例子: lttrs <- c("A", "B", "C") lbl <- "pct" users <- c(1,2) 我已经能够翻译rep(用户,每个=长度(lttrs))调用: import numpy as np lttrs = ['A', 'B', 'C'] lbl = ['pct'] users =
lttrs <- c("A", "B", "C")
lbl <- "pct"
users <- c(1,2)
我已经能够翻译rep(用户,每个=长度(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]
我正在努力向前迈进。听起来像是你想要的东西,它提供了iterables的产品
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))
您是否必须使用
join
来获取最终输出[“Apct1”“Bpct1”“Cpct1”“Apct2”“Bpct2”“Cpct2”]
?@pierrelaffortune是的,或者您可以手动连接。请注意,任何不包含字符串的列表都必须进行转换(这里我使用了map
),谢谢。它仍然以print
和notlist
给出输出。如果我保存此输出以供进一步操作使用,如何将输出保存到新变量?@pierrelaffortunep=product(…)
另存为generator@PierreLafortune:您还可以使用列表(map(''.join,product(lttrs,lbl,map(str,users)))
。列表在Python2.7中不是必需的,但是在Python3中(为了获得列表)是必需的。
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))