使用for循环创建新列表

时间:2020-06-01 16:49:26

标签: python python-3.x list for-loop

我有一个字符串列表,并且想使用一个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'])。

我在这里想念什么?预先非常感谢。

6 个答案:

答案 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