使用Python 3查找给定范围内的元素计数?
我有一个字符串,包含一系列数字。我需要知道范围内有多少元素。棘手的部分是,它可能是由连字符分隔的数字区域组合而成,也可能是由单个逗号分隔的数字组合而成。以下是一些具有预期计数的示例: 给定的值不会有任何重叠,因此我不必对此进行解释。(例如,你不会看到“1-10,5,6”) 这似乎是Python应该能够轻松完成的事情,但我不知道如何以Python的方式完成。我怎样才能完成这项任务 我目前拥有的:使用Python 3查找给定范围内的元素计数?,python,Python,我有一个字符串,包含一系列数字。我需要知道范围内有多少元素。棘手的部分是,它可能是由连字符分隔的数字区域组合而成,也可能是由单个逗号分隔的数字组合而成。以下是一些具有预期计数的示例: 给定的值不会有任何重叠,因此我不必对此进行解释。(例如,你不会看到“1-10,5,6”) 这似乎是Python应该能够轻松完成的事情,但我不知道如何以Python的方式完成。我怎样才能完成这项任务 我目前拥有的: count = 0 range = "1,2,3-4" for a_range i
count = 0
range = "1,2,3-4"
for a_range in ranges:
if "-" in a_range:
first,last = a_range.split("-")
amt = int(last) - int(first) +1
else:
amt = 1
count += amt
print(count)
这将为你做这项工作。但请在下次发布您的尝试 [35]中的
:val=“1-10,12,14,16”
[50]中:value=[int(i.split('-')[-1])-int(i.split('-')[0])+1表示val.split('-')中的i]
In[53]:总和(值)
Out[53]:13
只需按不同的间隔将其拆分并检查值的计数。首先,我们将定义要检查的字符串并从0开始计数:
string = "1-10,12,14,16"
num_amount = 0
我们将用逗号分割字符串,并得到一个值列表
first_list = string.split(',')
然后,我们将在每个项目中搜索连字符分隔符。如果没有“-”,我们将在计数器中添加一个。
如果有的话,我们减去数字,然后把它加到计数器上
for i in first_list:
if i.find('-')>=0:
start_end = i.split('-')
addition = int(start_end[1]) - int(start_end[0]) + 1
num_amount += addition
else:
num_amount += 1
您可以尝试(不要将range
用作变量名):
你能详细说明一下到目前为止你都尝试了什么吗?请重读,阅读,并提供一个答案。“为我实现此功能”是本网站的主题。你必须做一个诚实的尝试,然后问一个关于你的算法或技术的具体问题。“1-5,10-15”应该是11,而不是10。请在这里添加一些你的尝试的测试代码。如果我是,你可以删除这个
。\uu包含\uuu
,如果你用[-1]
替换[1]
。但请注意,您的解决方案是在每个范围内调用.split('-')
两次,这有点不必要。@Stef关于校准.split('-')
两次,您能建议一种替代方法吗。一种方法是识别具有范围的元素,并访问它们的最后和第一个元素,如果您心中有一个好的解决方案,那就太好了,了解这一点就太好了。谢谢:)
for i in first_list:
if i.find('-')>=0:
start_end = i.split('-')
addition = int(start_end[1]) - int(start_end[0]) + 1
num_amount += addition
else:
num_amount += 1
import re
re_bounds = re.compile(r"(\d+)(?:-(\d+))?")
ranges = "0-32"
print(sum((int(right) - int(left) + 1 if right else 1)
for left, right in re_bounds.findall(ranges)))