鉴于这个无害的小清单:
>>> lst = ['o','s','s','a','m','a']
Run Code Online (Sandbox Code Playgroud)
我的目标是使用以下方法之一以pythonically方式连接小恶魔:
A.普通ol'用于完成工作的字符串函数,简短,无需导入
>>> ''.join(lst)
'ossama'
Run Code Online (Sandbox Code Playgroud)
B. lambda,lambda,lambda
>>> reduce(lambda x, y: x + y, lst)
'ossama'
Run Code Online (Sandbox Code Playgroud)
C.全球化(什么都不做,导入一切)
>>> import functools, operator
>>> functools.reduce(operator.add, lst)
'ossama'
Run Code Online (Sandbox Code Playgroud)
请建议其他pythonic方法来实现这项宽宏大量的任务.
请排名(pythonic级别)和评级解决方案给出简明的解释.
在这种情况下,最pythonic解决方案是最好的编码解决方案吗?
我很惊讶地发现,当连接向量时,R会将因子强制转换为数字.即使水平相同,也会发生这种情况.例如:
> facs <- as.factor(c("i", "want", "to", "be", "a", "factor", "not", "an", "integer"))
> facs
[1] i want to be a factor not an integer
Levels: a an be factor i integer not to want
> c(facs[1 : 3], facs[4 : 5])
[1] 5 9 8 3 1
Run Code Online (Sandbox Code Playgroud)
在R中执行此操作的惯用方法是什么(在我的情况下,这些向量可能非常大)?谢谢.
我有4个字符串变量name, quest, favorite_color, speed可能是空的.我想将它们连接在一起,在非空的空格之间放置空格.代码的简单性,即查看和理解的简单程度,比速度更重要.
所以:
name = 'Tim'
quest = 'destroy'
favorite_color = 'red'
speed = 'fast'
Run Code Online (Sandbox Code Playgroud)
变
'Tim destroy red fast'
Run Code Online (Sandbox Code Playgroud)
和
name = 'Steve'
quest = ''
favorite_color = ''
speed = 'slow'
Run Code Online (Sandbox Code Playgroud)
变为:
'Steve slow'
Run Code Online (Sandbox Code Playgroud)
请注意,'Steve'和'slow'之间只有1个空格.
我该怎么做(最好是一行)?
我将变量作为连接字符串发送到文本框,因此我可以在getElementById调用中包含多个变量.
我需要指定换行符,以便正确格式化地址.
document.getElementById("address_box").value =
(title + address + address2 + address3 + address4);
Run Code Online (Sandbox Code Playgroud)
我已经在换行后和变量之后尝试过了.并尝试将连接运算符更改为+ =.
修复:此问题已解决;
document.getElementById("address_box").value =
(title + "\n" + address + "\n" + address2 + "\n" + address3 + "\n" + address4);
Run Code Online (Sandbox Code Playgroud)
并将文本框从"输入类型"更改为"textarea"
我不知道MySQL的连接运算符.
我已尝试此代码进行连接:
SELECT vend_name || ' (' || vend_country || ')'
FROM Vendors
ORDER BY vend_name;
Run Code Online (Sandbox Code Playgroud)
但它没有用.我应该使用哪个运算符来连接字符串?
最近,我发现串联列表时出现不一致。
因此,如果我使用+运算符,它不会将list与不同类型的任何对象连接在一起。例如,
l = [1,2,3]
l = l + (4,5) #TypeError: can only concatenate list (not "tuple") to list
Run Code Online (Sandbox Code Playgroud)
但是,如果使用+ =运算符,它将忽略对象的类型。例如,
l = [1,2,3]
l += "he" #Here, l becomes [1, 2, 3,"h", "e"]
l += (56, 67) #Here, l becomes [1, 2, 3,"h", "e", 56, 67]
Run Code Online (Sandbox Code Playgroud)
那么,这仅仅是语言的语义还是其他原因?
如果您运行x = 'y' 'z'在Python中,你得到x设置'yz',这意味着当Python看到彼此相邻的多个字符串某种字符串连接的发生.
但这是什么样的串联?它实际上正在运行'y' + 'z'还是正在运行''.join('y','z')或其他什么?
甚至可以在Rust中连接向量吗?如果是这样,有没有一种优雅的方式呢?我有这样的事情:
let mut a = vec![1, 2, 3];
let b = vec![4, 5, 6];
for val in &b {
a.push(val);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的方法?
我想将一个字节数组附加到现有文件(C:\test.exe).假设以下字节数组:
byte[] appendMe = new byte[ 1000 ] ;
File.AppendAllBytes(@"C:\test.exe", appendMe); // Something like this - Yes, I know this method does not really exist.
Run Code Online (Sandbox Code Playgroud)
我会使用File.WriteAllBytes这样做,但我将使用一个ENORMOUS字节数组,并且不断抛出System.MemoryOverload异常.因此,我很可能不得不将大数组拆分成多个并将每个字节数组附加到文件的末尾.
谢谢,
埃文
说我有这样的列表:
[a, b, c, d, e, f, g]
Run Code Online (Sandbox Code Playgroud)
如何修改该列表使其看起来像这样?
[a, b, c, def, g]
Run Code Online (Sandbox Code Playgroud)
我更希望它直接修改现有列表,而不是创建新列表.