Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python列表理解个人挑战

Python列表理解个人挑战
EN

Stack Overflow用户
提问于 2014-06-29 17:58:11
回答 3查看 947关注 0票数 0

给定一个文本文件"words.txt",使用列表理解来读取文件中的所有单词,并找到至少包含两个元音的所有单词。

所以,我有一个文本文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The quick brown fox jumps over the lazy dog

而且,获得所有单词和所有具有两个或多个元音的单词的最佳尝试是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#This could be hardcoded in, but for the sake of simplicity (as simple as simplicity gets)
vowels = ["a","e","i","o","u"]
filename = "words.txt"
words = [word for word in open(filename, "r").read().split()]
multivowels = [each for each in open(filename, "r").read().split() if sum(letter in vowels for letter in each) >= 2]

输出应模仿:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
All words in the file:  ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
The words in the file that contain 2 or more vowels: ['quick', 'over']

我试图把它写成一行,只是打印“单词”和“多元音”以及“文件中的所有单词”的列表理解部分。等。

有谁愿意接受把这两种理解结合在一起的挑战呢?我和我的队友都很困惑,但很乐意向我们的教授展示!

同样,我的最后一行代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print "All words in the file: " + str([word for word in open(filename, "r").read().split()]) + "\nAll words with more than 2 vowels: " + str([each for each in open(filename, "r").read().split() if sum(letter in vowels for letter in each) >= 2])

编辑:我试图获取文件中的所有单词,以及所有带有两个或多个元音的单词。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vowels = ["a", "e", "i", "o", "u"]
filename = "words.txt"
print [(word, each) for word in open(filename, "r").read().split() if sum([1 for each in word if each in vowels]) >= 2]
EN

回答 3

Stack Overflow用户

发布于 2014-06-29 19:22:47

这里有一些需要处理的角落案例,但是如果您假设一个简单的文本文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
vowels = "a","e","i","o","u"

answer = [[word for word in re.sub("[^\w]", " ",  sentence).split() if (sum(1 for letter in word if letter in vowels)>=2)] for sentence in open(filename,"r").readlines()]
票数 1
EN

Stack Overflow用户

发布于 2014-06-30 07:04:20

我在一个更大的数据集中运行了一个稍微不同的版本,并发现对str的重复调用开始增加。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vowels = ['a', 'e', 'i', 'o', 'u']
#filename = 'vowelcount.txt'
filename = 'largetextfile.txt'
print "All words in the file: ", [w for w in open(filename).read().split()], "\n", "All words with more than 2 vowels: ", [w for w in open(filename).read().split() if sum(1 for l in w if l in vowels) > 1]

cProfile调用此版本显示了一个小小的改进:

python -m cProfile vowelcount1.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   7839 function calls in 0.023 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.005    0.005    0.023    0.023 vowelcount1.py:1(<module>)
     6045    0.009    0.000    0.009    0.000 vowelcount1.py:4(<genexpr>)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        2    0.000    0.000    0.000    0.000 {method 'read' of 'file' objects}
        2    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
        2    0.000    0.000    0.000    0.000 {open}
     1786    0.009    0.000    0.018    0.000 {sum}

您输入的代码几乎是函数调用数的两倍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#filename = 'vowelcount.txt'
filename = 'largetextfile.txt'
vowels = ['a', 'e', 'i', 'o', 'u']
print "All words in the file: " + str([word for word in open(filename, "r").read().split()]) + "\nAll words with more than 2 vowels: " + str([each for each in open(filename, "r").read().split() if sum(letter in vowels for letter in each) >= 2])

python -m cProfile vowelcount2.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   14568 function calls in 0.036 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.004    0.004    0.036    0.036 vowelcount2.py:2(<module>)
    12774    0.016    0.000    0.016    0.000 vowelcount2.py:4(<genexpr>)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        2    0.000    0.000    0.000    0.000 {method 'read' of 'file' objects}
        2    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
        2    0.000    0.000    0.000    0.000 {open}
     1786    0.016    0.000    0.032    0.000 {sum}

正如每个人都已经很明显地提到的,这不是您想要编写的代码,其他人将不得不阅读。虽然我承认我也能理解一条蟒蛇的list理解是多么的有趣:

票数 0
EN

Stack Overflow用户

发布于 2014-06-30 13:30:21

所以,谢谢大家的意见。有很多非常有趣的方法可以找到有两个或更多元音的单词。今天早上我和我的教授谈到了我在这个问题上遇到的困难,他澄清了我的一个误解。

我的印象是,他希望单表理解返回一个列表,其中包含了所有的单词在档案中,和一个名单上只有两个或两个以上元音的单词。但是,实际上,他只是想要我已经完成的工作;每个场景的列表理解:文件中的所有单词;文件中带有两个或多个元音的所有单词。

谢谢大家的投入!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24482050

复制
相关文章
python3 组合的个人理解
python的组合在我看来和函数的嵌套差不多,比如一个人,一把枪,一个类调用人的类,和抢的类把他们组合起来,这就叫组合!
py3study
2020/01/03
4190
Python 编写金字塔+个人理解
2.print 自带换行 ,加上end = ''就表示 关闭 这个 print 自带的换行
py3study
2020/01/06
7130
重要!理解Python列表索引和切片
这是一个重要的话题,因为我们将在pandas中大量使用这些技术。Python列表索引和切片是指如何从列表或类似数组的对象中选择和筛选数据。这里讨论的技术也适用于元组。
fanjy
2022/04/13
2.5K0
重要!理解Python列表索引和切片
个人对于python3继承的理解
#继承,这样理解就对了,你的就是我的,但是我的还是我的,但是你有我也有的,我就不稀罕你的,所以调用了父类的时候,self就是我,而不是你 class you:     def __init__(self,name):         self.name=name     def youMoney(self):         print('this is %s Money'%self.name)     def House(self):         print('this is %s House'%s
py3study
2020/01/03
2840
如何理解和使用Python中的列表
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
小土豆Yuki
2020/06/15
7K0
DY个人视频列表 最新
s_v_web_id 滑块验证,和x-b算法,之前文章有分析过,再次就不过多赘述了,有兴趣的可以去看下:https://cenjy.blog.csdn.net/article/details/126193773
拉灯的小手
2023/07/11
5020
fish redux 个人理解
2.解读fish redux github上提供的示例,地址:https://github.com/alibaba/fish-redux/tree/master/example
FreeTimeWorker
2020/08/31
1.5K0
fish redux 个人理解
GoogLeNet的个人理解[通俗易懂]
在学习了Andrew Ng 的deeplearning.ai中的CNN课程时,顺着Ng的思路去了解了GoogLeNet这篇经典论文。GoogleNet提出了一个全新的深度CNN架构——Inception,无全连接层,可以节省运算的同时,减少了很多参数,参数数量是AlexNet的1/12,数量只有5 million,而且在ImageNet竞赛中取得了很好的成绩。   文章在引文中提到了提高深度神经网络性能最直接的方式,那就是增加网络的规模:深度和宽度。但是这样做的话肯定存在很多问题,问题是什么呢?   问题一:网络规模更大通常意味着需要更多的参数,这会使增大的网络更容易过拟合,尤其是在训练集的标注样本有限的情况下。   问题二:使用计算资源的显著增加。   紧接着,文章就这两个问题开展一系列的引用与讨论,提出论文的追求,那就是设计一个好的网络拓扑,最后引出了Inception架构,并且将Inception架构的设计初衷与思想诠释的比较到位。首先,肯定卷积神经网络的重要性,以及池化对于卷积效果的重要性,所以Inception架构的基础是CNN卷积操作。而就减小网络规模这一点来说,新的模型需要考虑一个新的网络架构,从如何近似卷积视觉网络的最优稀疏结构出发,进行探索与讨论。
全栈程序员站长
2022/09/21
3390
实操指南|关于Python中的列表理解
列表理解通常在Python中用于编写单行语句,这些语句通过循环访问可迭代对象来创建新列表或字典。本文将首先介绍有关for循环在Python中的工作原理,然后说明如何在Python中使用列表理解。
用户6543014
2020/02/25
1.5K0
java开发规范(个人理解)
今天看到一句话,非常有感触,大概的意思就是:代码不仅仅是给机器运行的,同样是给工程师去阅读的,请对每一行代码负责。后来想想自己写代码是否对每一行代码都负责,并且相当当接手别人的可读性非常差的代码心里的感受,所以决定写一篇博客来总结自己在java开发中学习到的规范以及技巧,该博客长期更新。
全栈程序员站长
2022/07/04
5290
PointNet++论文个人理解
来源丨https://zhuanlan.zhihu.com/p/157489233
3D视觉工坊
2020/12/11
9930
PointNet++论文个人理解
Python基础:可视化理解嵌套的列表解析
有时候,我们可能需要使用嵌套列表解析,这相当于Python中的嵌套循环。这种列表解析有时会令人困惑,这里将用几个简单的例子来帮助理解。
fanjy
2022/11/16
1.4K0
Python基础:可视化理解嵌套的列表解析
决策树的个人理解
所谓决策数,多个特征,对于每个特征进行评估,对于结果为True和False分别进行处理,处理完之后,在当前的处理结果的基础上,在评估其他特征,直至评估完成。
卡伊德
2022/09/13
2300
决策树的个人理解
SMO算法笔记及个人理解
SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。(KKT条件是该最优化问题的充分必要条件)。否则,选择两个变量,固定其他变量针对这两个变量构建一个二次规划问题。
全栈程序员站长
2022/06/25
7670
SMO算法笔记及个人理解
我个人对OOP的理解
OOP面向对象的思维: pay1:封装 A.避免使用非法数据赋值 B.保证数据的完整性 C.避免类内部发生修改的时候,导致整个程序的修改 pay2:继承 A.继承模拟了现实世界的关系,OOP中强调一切皆对象,这符合我们面向对象的编程思考方向 B.继承实现了代码的复用,这在例子中我们已经有所体会,合理地使用继承,会使我们的代码更加简洁 C.继承使得程序结构清晰,子类和父类的层次结构更清晰,最终的目的是是子类只关注子类的相关行为和状态,无须关注父类的行
用户1112962
2018/07/04
6250
PCA算法流程及个人理解
PCA,即主成分分析,是一种数据降维的方法,旨在利用降维的思想,把多指标转化为少数几个综合指标,降低数据维数,从而实现提升数据处理速度的目的。
CristianoC
2020/06/02
2.6K0
Python 列表
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 列表 更多内容请见👇 Python 入门基础专栏 Python 字符串 Python 常用字符串方法 ---- Python 列表 1.创建列表 1.1 list 函数 1.2 方括号 1.3 空列表 2.列表基本操作 2.1 元素修改 2.2 元素删除 2.3 切片赋值 2.4 多重赋值 3.列
小嗷犬
2022/11/15
2.9K0
差分约束系统个人理解
今天接触到一种很玄幻的东西: 差分约束 个人的理解:差分约束就是给定一些限制条件,求出满足条件的最优解,或者判断条件是否成立 做法/思路: 1.首先根据题目的条件,写出相应的不等式 2.将不等式转换成a-b<=c的形式 3.建一条权值为c的边,从b指向a 4.从0点向其他点连一条边权为1的点 5.跑深搜的SPFA,看看答案是否更新 这样做完,求得的是最短路!得出的是满足条件的最大值! 当然,你也可以按照和上面完全相反的思路做, 那么做法和得到的结果都是和上述完全相反的,但是都可以AC! 这里面肯定是有很多
attack
2018/04/12
6020
python列表
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
织幻妖
2021/03/05
2.1K0
python列表
点击加载更多

相似问题

在Haskell中挑战列表理解问题

34

挑战Python列表交叉

24

Python,理解列表-理解

12

Python Grocery列表Python 3音频挑战

31

用PHP解决captcha?个人挑战?

44
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文