遍历一整数列表和参加项目的基础上的一个条件

0

的问题

我试图迭代表整数和加入他们基于有条件使用python标准图书馆。 例如,我有一个名单的整数,看起来这样:

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]

我想循环,通过这个清单并结合的价值观,这样的结果将是一个串的形式:

result = '000-20-4-60-8000-1-9'

(在线都包括在内)。 条件是,如果上述数字不等于零一冲必须放在它的前面。 如果下一个值等于零,这是加入结束之前的价值。

integer iteration list python
2021-11-23 03:49:53
4

最好的答案

2

这将帮助: (考虑到数字是正在给定名单)

def join(lst):
    return "".join(list(map(lambda x: str(-x), lst))).lstrip('-')

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
print(join(listOfIntegers)) # 000-20-4-60-8000-1-9

过程:

  1. 每个元素转换为负面的,其中:
    • 9 变得 -9
    • 0 没有效果 -00 在蟒蛇
  2. 然后把它们转换成字符串并加入他们
  3. 确保删除尾 hyphen在我们的情况 lstrip('-') 可以帮助我们。
2021-11-23 04:48:25

请注意你做了什么和为什么它的工作。 这使得它更好地为其他人可能遇到此页以后。
krmogi

你的回答可以改善与其他支持的信息。 请 编辑 ,以增加进一步的细节,例如引文或文件,以便其他人可以确认你的答案是正确的。 你可以找到更多的信息如何编写很好的答案 在帮助中心.
Community
1

一个简单的方法,建立一个串整数列表的,随后通过一个简单的regex更换:

listOfIntegers = [1, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
inp = ''.join([str(x) for x in listOfIntegers])
result = re.sub(r'(?<=.)(?=[^\D0])', '-', inp)
print(result)  # 100-20-4-60-8000-1-9
2021-11-23 04:07:00

联是我发现了什么其他人没有为了解决类似的问题。 事实上我很肯定我看到一个解决方案非常相似,这一点。 我想一个细节,我没有提到的是,数值在这一整数列表有能力改变对任何价值从0-9。 会发生什么,如果第二条目的的名单现在是一个1. 反正是有自动化的级联中处理这种结果会现在将#0-10-20-4-60-8000-1-9
42Dugg

@Dugg我已经更新了与另一个答案。
Tim Biegeleisen

这及的另一个回答上述的伟大工程,然而,如果清单被更改,使第一条目的的名单现在是一个1,结果是#-100-20-4-60-8000-1-9 其中一个破折号是不幸的是放在开始的时候。 是否有任何方法来消除这种情况发生这样的结果将#100-20-4-60-8000-1-9? 你也有过一吨的帮助,迄今为止与此有关。 谢谢你!
42Dugg

@42Dugg检查更新的答复。 我们可以添加一个积极的回顾其声称,破折号是仅仅增加了对符的其它比第一个。
Tim Biegeleisen
0

这是一个简单的解决办法:

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]

for i in listOfIntegers:
    if i != 0:
        print("-" + str(i), end="")
    else:
        print(str(i), end="")

每个项目的清单,我们检查,如果项目不等于0。 如果它不等于0,我们打印出来的项目有一个破折号,在它前面,并使用 end 参数,以避免新的线。 如果这是0,我们只需打印出来的项目。

2021-11-23 04:35:53
0

使用一个循环:

def func(nums):
    result = ''
    for i, num in enumerate(nums):
        if num != 0 and i != 0:
            result += '-'
        result += str(num)
    return result
2021-11-23 03:55:07

这个工作了巨大的,但是,如果清单被更改,使第一条目的的名单现在是一个1,结果是#-100-20-4-60-8000-1-9 其中一个破折号是不幸的是放在开始的时候。 是否有任何方法来消除这种情况发生这样的结果将#100-20-4-60-8000-1-9? 谢谢!
42Dugg

对不起失踪边缘的情况。 我们可以简单地添加一个条件,跳过第一号。 我的编码。
Tyler Liu

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................