对于整数,列表理解可以通过以下方式完成:
julia> nums = [1,2,3,4]
4-element Array{Int64,1}:
1
2
3
4
julia> nums = [i+1 for i in nums]
4-element Array{Int64,1}:
2
3
4
5
但是当我尝试在字符串中添加一个字符时,它会抛出一个错误:
julia> s = split("the lazy fox jumps over the brown dog")
8-element Array{SubString{String},1}:
"the"
"lazy"
"fox"
"jumps"
"over"
"the"
"brown"
"dog"
julia> s2 = [word +'X' for word in s]
ERROR: syntax: invalid comprehension syntax
当角色是私人unicode char(http://www.fileformat.info/info/unicode/char/e000/index.htm)时,它会抛出另一个错误:
julia> s2 = [word + u'\uE000' for word in s]
错误:UndefVarError:你没有定义 in collect(:: Base.Generator {Array {SubString {String},1},## 3#4})at ./array.jl:307
如何将unicode char / string附加到Julia中的字符串列表?
答案 0 :(得分:2)
要快速回答您的问题,正确的方法是
[i*"X" for i in s]
但是,请记住'X'
是和"X"
是两回事。
julia> val = 'X'
'X'
julia> typeof(val)
Char
julia> val = "X"
"X"
julia> typeof(val)
String
如果你有一个Python背景,两者之间没有区别,那么最初可能会发生这种情况。
Julia中的字符串连接也由*
而不是+
完成!
你可能会问为什么会这样!好好看一下这篇文章here
答案 1 :(得分:1)
正如另一个答案所说,如果你需要追加一个字符串,你可以使用字符串连接运算符:
[word * "X" for word in s]
如果确实需要连接Char
,比如因为你在某个变量c
中有它,可以使用字符串插值来完成,如下所示:< / p>
["$word$c" for word in s]
(当然,您也可以使用String
将其转换为string(c)
并使用第一种形式。)