python-3.x 列表理解vs循环-我不明白什么?

7xllpg7q  于 2023-01-22  发布在  Python
关注(0)|答案(5)|浏览(173)

我有点困惑为什么我的列表理解可以工作,而我的for循环却不行。
有人能解释一下我错过了什么吗?

sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98']
# When for-loop
loop_sales =[]
for sale in sales:
    sale.strip("$")
    loop_sales.append(sale)
print(loop_sales)

输出:【1.21美元、7.29美元、12.52美元、5.13美元、20.39美元、30.82美元、1.85美元、17.98美元】

# When list comprehension
list_sales = [sale.strip("$") for sale in sales]
print(list_sales)

输出:【1.21、7.29、12.52、5.13、20.39、30.82、1.85、17.98】

x4shl7ld

x4shl7ld1#

strip方法只是返回一个新值(实际上是处理后的输出),它根本不更改sale变量。为了使它工作,请在常规for循环代码中尝试使用sale = sale.strip("$")而不是sale.strip("$"),或者就像Talha Tayyab在回答中所说的那样使用loop_sales.append(sale.strip('$'))

jjjwad0x

jjjwad0x2#

试试这个:

sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98']
# When for-loop
loop_sales =[]
for sale in sales:
    loop_sales.append(sale.strip("$"))
print(loop_sales)
#output
['1.21', '7.29', '12.52', '5.13', '20.39', '30.82', '1.85', '17.98']
wkftcu5l

wkftcu5l3#

作为一个方法,strip并不改变字符串本身,它只是返回一个字符串的剥离版本,所以你可以用两种方法来处理这个问题:要么将返回的字符串保存为一个变量并附加该变量,要么附加sales.strip($)
就像这样版本1(另存为变量):

sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98']
# When for-loop
loop_sales =[]
for sale in sales:
    a= sale.strip("$")
    loop_sales.append(a)
print(loop_sales)

或版本2:

sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98']
# When for-loop
loop_sales =[]
for sale in sales:
    loop_sales.append(sale.strip("$"))
print(loop_sales)

这完全取决于你是否会在后面的代码中使用这个变量,但我认为如果不使用的话,第二个版本会更好。

7bsow1i6

7bsow1i64#

strip不会 * 改变 * 字符串,它返回剥离后的字符串。

ibps3vxo

ibps3vxo5#

loop_sales =[]
for sale in sales:
    loop_sales.append(sale.strip("$"))
print(loop_sales)

相关问题