如果我有清单,例如
loaders: [{
test: /\.scss$/,
exclude: fs.realpathSync('./node_modules/path/to/bootstrap/src/styles')
loader: cssModulesLoader,
}
使用什么方法可以移动字符在项目本身中的位置并进行存储。因此,可以通过将第一个字符移到末尾来将['Hello', 'what', 'is', 'your', 'name']
更改为'Hello'
,并将其应用于其余项目。
答案 0 :(得分:2)
您可以使用slicing并建立索引:
def shift(s):
return s[1:] + s[0]
data = ['Hello', 'what', 'is', 'your', 'name']
result = [shift(s) for s in data]
print(result)
输出
['elloH', 'hatw', 'si', 'oury', 'amen']
语句result = [shift(s) for s in data]
被称为list comprehension,是以下语句的等价:
result = []
for s in data:
result.append(shift(s))
最后,另一种替代方法是使用map:
result = list(map(shift, data))
函数映射将shift应用于数据的每个元素,但它返回(在Python 3中)可迭代,因此您需要将其转换为list。
答案 1 :(得分:2)
只需重新构建列表并使用切片和加法生成新字符串:
lst = ['Hello', 'what', 'is', 'your', 'name']
result = [x[1:]+x[0] if x else "" for x in lst]
结果:
['elloH', 'hatw', 'si', 'oury', 'amen']
(请注意允许对空字符串具有鲁棒性的三元表达式,因为在空字符串x[0]
的情况下会产生一个IndexError
。如果没有三元表达式,我们可以使用[x[1:]+x[0:1] for x in lst]
做同样的事情)
答案 2 :(得分:2)
检查以下代码:
node {
// Some declaration and code
stage('Prepare deploy') {
// Create a talbe for the servers lists
def servers = [:]
// For each server know, if deployment is enabled
// deploy resources
params.each { srv, value ->
if ("$value" == "true"){
// add the current current to the enabled servers
servers["Server ${srv}"] = {
// Install server - the SERVER and CONF variable need to be propagate to the others scripts
withEnv(["SERVER=props.SRV_${srv}","CONF=env.DEPLOY_HOME + ${srv}"]){
load env.JENKINSFILES_DIRECTORY + "/server-configuration"
load env.JENKINSFILES_DIRECTORY + "/server-deploiement"
load env.JENKINSFILES_DIRECTORY + "/server-postconfig"
load env.JENKINSFILES_DIRECTORY + "/server-start"
}
}
}
}
parallel servers
}
}
输出:
#!/usr/bin/env groovy
node{
// Some declaration
stage('configure serveur'){
// The variable SERVER and CONF must be visible here
// is it possible ?
sh "ssh -X " + env.USER +"@${env.SERVER} 'sh echo \"${env.CONF}\"'"
}
}