【问题标题】:How to convert a for loop output into a python list如何将for循环输出转换为python列表
【发布时间】:2025-12-21 18:00:12
【问题描述】:

我是 Python 新手,对这个问题的水平感到抱歉。

这是我的输出(来自网站的价格)。我想知道如何将它们转换为ints 的列表

for price_list_items in price_list:
        for values in price_list_items:
            x= values.rstrip(' zł')
            print(x)

479 000
355 000
269 000
499 000
289 000

所需的结果将是这样的 [479 000,355 000,...]。另外,我希望能够使用这些值执行基本操作。 我找到了这个线程How to convert a for loop output into a list (python),但它没有帮助我。

【问题讨论】:

    标签: python loops for-loop


    【解决方案1】:

    看起来您的字符串应该是一系列 6 位数字,但由于没有更好的术语,两个单独的数字部分都被空格分隔,数字本身被换行符分隔。因此,解决方案是删除数字部分之间的空格,将结果转换为整数,如下所示:

    int(part.replace(' ', '')) # Finds all instances of space and replaces them with nothing
    

    把它放在一个列表理解中,我们有:

    numbers = [int(l.replace(' ', '')) for l in str]
    

    更新

    既然你已经发布了你的代码,我可以给你一个更好的答案。

    [ int(v.rstrip(' zł').replace(' ', '')) for price_list_items in price_list for v in price_list_items ]
    

    【讨论】:

    • 如果数据是从以文本模式打开的文件中读取的,那么行尾通常会自动转换为\n;更多选项可通过 newline arg 到 open 获得。
    • @PM2Ring 正确。我不确定他是如何得到他的数据的。听起来他已经从任何地方获得了它,并且他希望从那里将其放入 listints 中
    • 很公平,但假设他只是有简单的\n 行结尾可能是安全的。如果他的多行数据在单个字符串中,可以用.splitlines 拆分,这样可以去掉行尾。如果它已经在行列表中,或者正在逐行读取,则可以使用.rstrip 删除行尾(以及任何其他尾随空格)。顺便说一句,您的代码同时具有\r\n\n\r。你可能应该解决这个问题。 ;)
    • @PM2Ring 问题,我们可以将这些数字转换为 ints 我们知道,但是如果我们保持两组 3 位数字之间的空间,他将如何使用这些整数,即 @ 987654336@ 即使它的ints 我们不应该消除那个空间
    • @vash_the_stampede 同意。这就是我的解决方案所做的
    【解决方案2】:
    lista = []
    
    for price_list_items in price_list:
            for values in price_list_items:
                x= values.rstrip(' zł')
                lsita.append(x)
    
    lista = ['479 000', '350 000']
    for idx, item in enumerate(lista):
            item = item.split()
            item = ''.join(item)
            lista[idx] = int(item)
    
    print(lista)
    

    ~/python/stack$ python3.7 sum.py [479000, 350000]

    将您的最后一行更改为 appendlista 而不是 print。现在我们有了lista = ['479 000', ...],但我们希望ints 对其执行操作。

    所以我们可以然后enumerate 我们的list,从那里我们可以split()join() 到达这里lista = ['479000', ...] 然后我们可以使用int(item) 并将它们放回listaints

    为了好玩,我们可以做一些map 然后从:

    lista = ['479 000', '350 000']
    lista = list(map(lambda x: int(''.join((x.split()))), lista))
    

    【讨论】:

    • 谢谢 vash_the_stampede。理解它需要一些时间,但它工作正常。
    • @Paul np 如果有任何问题,我会尽力详细说明