我有一个字符串列表,并且想使用一个for循环来更改字符串并创建一个新列表。
oldList = ['AAA','BBB','CCC']
for i in range(len(oldList)):
newList = []
add1 = 'a_'
add2 = '_z'
newStr = add1 + oldList[i] + add2
newList.append(newStr)
列表“ newList”应包含旧列表中的所有字符串以及修订(即['a_AAA_z','a_BBB_z','a_CCC_z'])。但是,它仅包含最后一个字符串(即['a_CCC_z'])。
我在这里想念什么?预先非常感谢。
答案 0 :(得分:4)
在循环外声明输出列表。可以通过以下方式进行简化:
newList = []
for ele in oldList:
add1 = 'a_'
add2 = '_z'
newStr = add1 + ele + add2
newList.append(newStr)
或者,如果我们使用列表解析和格式化的字符串(如@AnnZen所建议的那样),我们甚至可以进一步简化
newList = [f"a_{ele}_z" for ele in oldList]
答案 1 :(得分:1)
列表的声明应该在循环之外
oldList = ['AAA','BBB','CCC']
newList = []
for i in range(len(oldList)):
# should not declare newList inside for loop
#newList = []
add1 = 'a_'
add2 = '_z'
newStr = add1 + oldList[i] + add2
newList.append(newStr)
print(newList)
答案 2 :(得分:1)
您可以使用格式化的字符串和列表理解:
oldList = ['AAA','BBB','CCC']
newList = [f'a_{s}_z' for s in oldList]
print(newList)
输出:
['a_AAA_z', 'a_BBB_z', 'a_CCC_z']
答案 3 :(得分:0)
使用列表组合:
node@kubemaster:~/Desktop$ kubectl describe pvc my-claim
Name: my-claim
Namespace: default
StorageClass: my-local-storage
Status: Bound
Volume: my-local-pv
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Mi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: podname-deployment-897d6947b-hnvvq
podname-deployment-897d6947b-q4f79
Events: <none>
答案 4 :(得分:0)
您需要在for循环之外声明newList
。如果在for循环内声明它,则在for循环的每次迭代中,您都将变量newList
重新分配为一个空列表,因此,您会丢失之前迭代中的数据(保留仅使用上一次迭代中的数据。
这是修正了声明的代码:
oldList = ['AAA','BBB','CCC']
newList = []
for i in range(len(oldList)):
add1 = 'a_'
add2 = '_z'
newStr = add1 + oldList[i] + add2
newList.append(newStr)
这是一个甚至简化的版本:
oldList = ['AAA','BBB','CCC']
newList = ['a_' + str + '_z' for str in oldList]
答案 5 :(得分:0)
您需要在for循环外初始化\sigma_2
,否则它将在每次迭代时初始化。
此代码段可能会有所帮助。
greek