Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
在代码审查挑战中,我最近有以下代码,称为unpythonic:
我还为使用Ruby编写的挑战提交了不同的代码,并将该解决方案称为“ Pythonic”。
代码是Pythonic / Unpythonic是什么意思?
如果您只希望在空白处进行拆分,那么它将变得更加容易:
95%的时间,如果您使用字符串中的单个字符,则有更好的方法。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
在代码审查挑战中,我最近有以下代码,称为unpythonic:
def word_count(string):
wc_dict = {}
word = ""
index = 0
while index < len(string):
if string[index].isalnum():
word = word + string[index]
index += 1
else:
if word:
if word.lower() in wc_dict:
wc_dict[word.lower()] += 1
else:
wc_dict[word.lower()] = 1
word = ""
index += 1
if word:
if word.lower() in wc_dict:
wc_dict[word.lower()] += 1
else:
wc_dict[word.lower()] = 1
return wc_dict
我还为使用Ruby编写的挑战提交了不同的代码,并将该解决方案称为“ Pythonic”。
代码是Pythonic / Unpythonic是什么意思?
最佳答案
我会说“ pythonic”的意思是“为了编写易于阅读的代码,请遵循python的惯用法”。您的示例不是pythonic,因为它(可能)更容易编写。
例如使用正则表达式+ collections.Counter
可以将其转换为非常明显的2-liner:
words = re.findall(r'\w+', string)
wc_dict = collections.Counter(words)
如果您只希望在空白处进行拆分,那么它将变得更加容易:
wc_dict = collections.Counter(string.split())
95%的时间,如果您使用字符串中的单个字符,则有更好的方法。
09-10 16:03