我想在列表中标识连续数字组,以便:
myfunc([2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20])
Run Code Online (Sandbox Code Playgroud)
返回:
[(2,5), (12,17), 20]
Run Code Online (Sandbox Code Playgroud)
并且想知道最好的方法是什么(特别是如果在Python中有内置的东西).
编辑:注意我原本忘了提到个别数字应该作为单独的数字返回,而不是范围.
我现在使用NetBeans作为我的选择IDE,它有一个用于UML建模的插件.在类图,有被称为模型元素Boundary Class,Control Class和Entity Class.但是,我找不到它们的好定义,但我确实在UML Class Diagrams上找到了这个网站.
检查sPython 中的字符串只包含一个字符的有效方法是什么'A'?像all_equal(s, 'A')这样的东西会像这样:
all_equal("AAAAA", "A") = True
all_equal("AAAAAAAAAAA", "A") = True
all_equal("AAAAAfAAAAA", "A") = False
Run Code Online (Sandbox Code Playgroud)
两种看似效率低下的方法是:首先将字符串转换为列表并检查每个元素,然后再使用正则表达式.是否有更有效的方法,或者这些是Python中最好的方法?谢谢.
在固体力学中,我经常使用Python并编写如下所示的代码:
for i in range(3):
for j in range(3):
for k in range(3):
for l in range(3):
# do stuff
Run Code Online (Sandbox Code Playgroud)
我经常这样做,我开始怀疑是否有更简洁的方法来做到这一点.当前代码的缺点是:如果我遵守PEP8,那么我不能超过每行79个字符的限制,并且没有太多的空间,特别是如果这又是一个类的功能.
我试图捕获一个字母在一个字符串中出现两次使用RegEx(或者可能有更好的方法?),例如我的字符串是:
ugknbfddgicrmopn
Run Code Online (Sandbox Code Playgroud)
输出将是:
dd
Run Code Online (Sandbox Code Playgroud)
但是,我尝试过类似的东西:
re.findall('[a-z]{2}', 'ugknbfddgicrmopn')
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它返回:
['ug', 'kn', 'bf', 'dd', 'gi', 'cr', 'mo', 'pn'] # the except output is `['dd']`
Run Code Online (Sandbox Code Playgroud)
我也有办法获得期望输出:
>>> l = []
>>> tmp = None
>>> for i in 'ugknbfddgicrmopn':
... if tmp != i:
... tmp = i
... continue
... l.append(i*2)
...
...
>>> l
['dd']
>>>
Run Code Online (Sandbox Code Playgroud)
但那太复杂了......
如果是'abbbcppq',那么只抓住:
abbbcppq
^^ ^^
Run Code Online (Sandbox Code Playgroud)
所以输出是:
['bb', 'pp']
Run Code Online (Sandbox Code Playgroud)
然后,如果是的话'abbbbcppq',抓bb两次:
abbbbcppq
^^^^ ^^
Run Code Online (Sandbox Code Playgroud)
所以输出是:
['bb', 'bb', 'pp']
Run Code Online (Sandbox Code Playgroud) 我正在创建一个类,其中一个方法将新项插入到排序列表中.该项目将插入已排序列表中的已更正(已排序)位置.我不能使用比其他任何内置列表函数或方法[],[:],+,和len虽然.这是让我感到困惑的部分.
解决这个问题的最佳方法是什么?
我需要匹配Web应用程序中的某些URL,即/123,456,789编写此正则表达式以匹配模式:
r'(\d+(,)?)+/$'
Run Code Online (Sandbox Code Playgroud)
我注意到它似乎没有评估,即使在测试模式几分钟后:
re.findall(r'(\d+(,)?)+/$', '12345121,223456,123123,3234,4523,523523')
Run Code Online (Sandbox Code Playgroud)
预期的结果是没有匹配.
但是,此表达式几乎立即执行(请注意尾部斜杠):
re.findall(r'(\d+(,)?)+/$', '12345121,223456,123123,3234,4523,523523/')
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?
我真的不需要这样做,但只是想知道,有没有办法将装饰器绑定到类中的所有函数,而不是明确地为每个函数声明它.
我认为它然后变成了一种方面,而不是装饰者,它确实感觉有点奇怪,但是想到时间或认证这样的东西它会非常整洁.
我4个月前写了我的第一个"Hello World".从那时起,我一直在学习莱斯大学提供的Coursera Python课程.我最近参与了一个涉及元组和列表的迷你项目.将元组添加到列表中有一些奇怪的事情:
a_list = []
a_list.append((1, 2)) # Succeed! Tuple (1, 2) is appended to a_list
a_list.append(tuple(3, 4)) # Error message: ValueError: expecting Array or iterable
Run Code Online (Sandbox Code Playgroud)
这对我来说很困惑.为什么使用"tuple(...)"而不是简单的"(...)"来指定要附加的元组会导致ValueError?
python ×9
list ×3
performance ×2
python-2.7 ×2
python-3.x ×2
regex ×2
append ×1
class ×1
class-method ×1
continuous ×1
decorator ×1
oop ×1
range ×1
sorted ×1
string ×1
tuples ×1
types ×1
uml ×1