【问题标题】:List comprehension vs loop - what do i not understand?列表理解与循环 - 我不明白什么?
【发布时间】:2021-12-05 13:41:56
【问题描述】:

我有点困惑,为什么我的列表理解有效,但我的 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']

【问题讨论】:

    标签: python list-comprehension


    【解决方案1】:

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

    【讨论】:

      【解决方案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)
      #output
      ['1.21', '7.29', '12.52', '5.13', '20.39', '30.82', '1.85', '17.98']
      

      【讨论】:

        【解决方案3】:

        作为一种方法,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)
        

        这一切都取决于您是否会在稍后的代码中使用该变量,但我认为如果不使用第二个版本会更好。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

            • 在代码块中插入代码会更好,否则代码可能会折叠成一个 lint
            猜你喜欢
            • 1970-01-01
            • 2019-06-14
            • 2016-01-24
            • 2022-12-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-20
            相关资源
            最近更新 更多