我在Python中搜索一个简短而酷的rot13函数;-)我写了这个函数:
def rot13(s):
chars = "abcdefghijklmnopqrstuvwxyz"
trans = chars[13:]+chars[:13]
rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
return ''.join( rot_char(c) for c in s )
Run Code Online (Sandbox Code Playgroud)
谁能让它变得更好?例如,支持大写字符.
我正在寻找如何隐藏我的Python源代码.
print "Hello World!"
Run Code Online (Sandbox Code Playgroud)
我如何编码这个例子,以便它不是人类可读的?我被告知使用base64,但我不知道如何.
是否有任何工具可以采用特定的正则表达式,并根据正则表达式匹配的特定数量的字符所需的操作数返回最坏的情况?
例如,给定a (f|a)oo.*[ ]baz,引擎可能会通过多少步骤来匹配100个字符?
如果有一个工具可以获取大量文本样本并显示每次运行的平均操作,我也会感兴趣.
我意识到这将在很大程度上取决于所使用的引擎和实现 - 但我不知道这是多么常见.因此,如果它对于许多语言来说很常见(使我的问题太模糊),我会对Perl和Python特别感兴趣.
可能重复:
Python中的三元条件运算符
var foo = (test) ? "True" : "False";
Run Code Online (Sandbox Code Playgroud)
这在Python中会是什么样子?
使用Python 2.7,如果这有所作为.
如何测试列表是否包含另一个列表(即,它是一个连续的子序列).假设有一个名为contains的函数:
contains([1,2], [-1, 0, 1, 2]) # Returns [2, 3] (contains returns [start, end])
contains([1,3], [-1, 0, 1, 2]) # Returns False
contains([1, 2], [[1, 2], 3]) # Returns False
contains([[1, 2]], [[1, 2], 3]) # Returns [0, 0]
Run Code Online (Sandbox Code Playgroud)
编辑:
contains([2, 1], [-1, 0, 1, 2]) # Returns False
contains([-1, 1, 2], [-1, 0, 1, 2]) # Returns False
contains([0, 1, 2], [-1, 0, 1, 2]) # Returns [1, 3]
Run Code Online (Sandbox Code Playgroud) 我知道可以将生成器转换为"低级别"(例如list(i for i in xrange(10)))的列表,但是可以在不先遍历列表的情况下进行反向(例如.(i for i in range(10)))吗?
编辑:删除这个词是cast为了清楚我正在努力实现的目标.
编辑2:实际上,我认为我可能在基础层面误解了发电机.这将教会我在早晨喝咖啡之前不要发布SO问题!
您发现自己使用哪些鲜为人知但有用的Clojure功能?随意分享小技巧和习语,但试着限制你自己的核心和贡献.
我在这些类似问题的答案中找到了一些非常有趣的信息:
对于其他语言,还有更多的"隐藏功能"问题,所以我认为为Clojure设置一个也很好.
我正在学习Python,同时实现构建脚本等.目前一切都运行良好,因为脚本做了他们需要做的事情.但我一直觉得我错过了一些东西,比如"The Python Way".我知道构建脚本和胶水脚本并不是最令人兴奋的开发工作,可能很难成为揭示Python真正力量的候选者,但我仍然希望有机会让我的思绪受到重创.我主要用C#开发,我发现我的Python代码在结构和样式上看起来与我的很多C#代码非常相似.换句话说,我觉得我在用C#思考,但用Python编写.
我真的错过了什么吗?
(注意:我意识到这不是一个编程问题而且它是相当广泛的,并且可能没有明确的答案,所以如果必须的话,请将其归结为遗忘.)
我有一个函数,如果一个字符串匹配列表中的至少一个正则表达式,则返回True,否则返回False.经常调用该函数,性能是一个问题.
当通过cProfile运行时,该函数花费大约65%的时间进行匹配,35%的时间遍历列表.
我认为有一种方法可以使用map()或其他东西,但我想不出一种让它在找到匹配后停止迭代的方法.
有没有办法让这个功能更快,同时还能在找到第一个匹配后返回它?
def matches_pattern(str, patterns):
for pattern in patterns:
if pattern.match(str):
return True
return False
Run Code Online (Sandbox Code Playgroud) 我正在尝试从电子邮件的纯文本脚本中提取电子邮件地址.我拼凑了一些代码来查找地址本身,但我不知道如何区分它们; 现在它只是吐出文件中的所有电子邮件地址.我想这样做它只会吐出前面有"From:"和一些通配符的地址,并以">"结尾(因为电子邮件设置为From [name] <[email]> ).
这是现在的代码:
import re #allows program to use regular expressions
foundemail = []
#this is an empty list
mailsrch = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')
#do not currently know exact meaning of this expression but assuming
#it means something like "[stuff]@[stuff][stuff1-4 letters]"
# "line" is a variable is set to a single line read from the file
# ("text.txt"):
for line in open("text.txt"):
foundemail.extend(mailsrch.findall(line))
# this extends the previously named list via the "mailsrch" variable
#which was named before
print …Run Code Online (Sandbox Code Playgroud)