首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python上的连接矢量字符串

Python上的连接矢量字符串
EN

Stack Overflow用户
提问于 2014-01-31 08:40:41
回答 4查看 1.6K关注 0票数 0

R中,我可以使用paste将字符串向量连接在一起

代码语言:javascript
复制
> a = 1:3
> a
[1] 1 2 3

> b = 4:6
> b
[1] 4 5 6

> d = 7:9
> d
[1] 7 8 9

> together = paste(a, b, d, sep='-')
> together 
[1] "1-4-7" "2-5-8" "3-6-9"

我如何在Python中做同样的事情?

EN

回答 4

Stack Overflow用户

发布于 2014-01-31 08:52:40

R中的矢量化操作可以用Python语言中的list comprehensions或内置函数map()来近似。

在这里,我们使用zip对这三个列表进行并行迭代。

代码语言:javascript
复制
a = range(1,4)
b = range(4,7)
c = range(7,10)
together = ['-'.join(str(i) for i in z) for z in zip(a,b,c)]

输出:

代码语言:javascript
复制
>>> together
['1-4-7', '2-5-8', '3-6-9']

上面代码中的一个微妙之处在于,连接的参数是一个generator expression,这意味着它的计算很慢。更懒惰的是,将zip替换为itertools包中的izip

票数 6
EN

Stack Overflow用户

发布于 2014-01-31 08:45:09

你自己的函数怎么样:

代码语言:javascript
复制
def f(*args):
    return '-'.join([str(a) for a in args])

然后是map

代码语言:javascript
复制
map(f, a, b, c)
# ['1-4-7', '2-5-8', '3-6-9']

或者是为了好玩(以及任意数量的值):

代码语言:javascript
复制
map(lambda *args: '-'.join(map(str, args), a, b, c)
票数 2
EN

Stack Overflow用户

发布于 2014-01-31 08:58:18

添加假设3个元素列表的一行代码

代码语言:javascript
复制
l1 = range(1,4)
l2 = range(4,7)
l3 = range(7,10)

map(lambda x,y,z: '%s-%s-%s' % (x,y,z), l1, l2,l3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21470513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档