迭代整数列表并根据条件连接项目
Iterating over a list of integers and joining items based on a condition
我正在尝试遍历整数列表并使用 python 标准库根据条件加入它们。例如,我有一个看起来像这样的整数列表:
listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
我想遍历此列表并合并值,这样结果将是以下形式的字符串:
result = '000-20-4-60-8000-1-9'
(其中包含破折号)。这样做的条件是,如果前面的数字不等于零,则必须在其前面放置一个破折号。如果下一个值等于零,它将连接到它之前的值的末尾。
一种直接的方法,从整数列表构建一个字符串,然后是一个简单的正则表达式替换:
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
这是一个简单的解决方案:
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,我们简单地打印出该项目。
这将有助于:
(考虑到给定列表中的数字是正数)
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
过程:
- 将每个元素转换为负数,其中:
9
变为 -9
0
没有效果,因为 -0
在 python 中是 0
- 然后将它们转换成字符串并加入它们
- 确保删除尾随
hyphen
,在我们的例子中 lstrip('-')
帮助我们做到这一点。
使用循环:
def func(nums):
result = ''
for i, num in enumerate(nums):
if num != 0 and i != 0:
result += '-'
result += str(num)
return result
我正在尝试遍历整数列表并使用 python 标准库根据条件加入它们。例如,我有一个看起来像这样的整数列表:
listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
我想遍历此列表并合并值,这样结果将是以下形式的字符串:
result = '000-20-4-60-8000-1-9'
(其中包含破折号)。这样做的条件是,如果前面的数字不等于零,则必须在其前面放置一个破折号。如果下一个值等于零,它将连接到它之前的值的末尾。
一种直接的方法,从整数列表构建一个字符串,然后是一个简单的正则表达式替换:
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
这是一个简单的解决方案:
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,我们简单地打印出该项目。
这将有助于: (考虑到给定列表中的数字是正数)
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
过程:
- 将每个元素转换为负数,其中:
9
变为-9
0
没有效果,因为-0
在 python 中是
0
- 然后将它们转换成字符串并加入它们
- 确保删除尾随
hyphen
,在我们的例子中lstrip('-')
帮助我们做到这一点。
使用循环:
def func(nums):
result = ''
for i, num in enumerate(nums):
if num != 0 and i != 0:
result += '-'
result += str(num)
return result