首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的列表理解没有显示出与for循环相同的结果?

列表理解是一种简洁的语法形式,用于创建新的列表。它可以通过在方括号内使用表达式和循环来生成列表元素。然而,有时候列表理解可能不会产生与等价的for循环相同的结果。

可能的原因之一是列表理解中的表达式和循环的顺序不同。在列表理解中,表达式通常位于循环之前,而在for循环中,表达式位于循环之后。这种顺序的不同可能会导致结果的不同。

另一个可能的原因是列表理解中的条件筛选。列表理解可以包含条件语句,用于筛选满足特定条件的元素。如果在列表理解中使用了条件筛选,而在等价的for循环中没有使用相同的条件,那么结果可能会不同。

此外,列表理解还具有一些特殊的行为。例如,它可以处理嵌套的循环和条件语句,从而在一个表达式中完成多个操作。这种特殊的行为可能会导致与等价的for循环不同的结果。

总之,列表理解和for循环虽然可以实现相同的功能,但它们的语法和执行方式有所不同,可能会导致不同的结果。因此,在使用列表理解时,需要仔细考虑表达式和循环的顺序,以及是否使用了条件筛选。如果希望得到与for循环相同的结果,可以逐步调试列表理解,确保它与等价的for循环具有相同的逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

有趣 Python 特性 2 | 一个你绝对猜不到结果

本文字数:1441 字 阅读本文大概需要:4 分钟 写在之前 Python 提供了很多让使用者觉得舒服至极功能特性,但是随着不断深入学习和使用 Python,发现其中存在着许多玄学输出之前预想结果大相径庭...,这个对于初学者来说难以理解,但是在理解它们以后又会觉得是这么有意思,所以我准备了这个「有趣 Python 特性」系列,写一些碰到或看到一些你所不知道「奇葩」,这里面会涉及到在 Python2...猜大多数人看到这个结果都会很懵圈,就算不说结果,很多人看到最开始那行代码,也会觉得没有头脑,下面就让来详细说一下,为什么是这样。...下面结合这个赋值语句形式和文章开头代码详细说一下为什么会出现这样一个我们猜不到结果: 首先是 (target_list "=")+,前面好容易理解,后面带着 + 意味着可以有一个或者多个「目标列表...下面我们将 a 字典中 5 键值设置为元组 ({}, 5)来创建「循环引用」,{...} 指的是 a 引用了相同对象。

29210

Python读书笔记16(循环大法好!while少不了)

今天和大家分享一个新循环语句while! 之前学过for循环语句用于遍历列表、元组、字典内值,我们重温一下! 这种for循环语句是根据列表元素值数量来决定循环次数。...反之则执行while循环语句。 大家看一下缩进情况,本次代码Print缩进if相同,证明地位if是一致,print函数不在if内,则是属于while循环!...本代码功能虽然上一个是一致,但是print缩进continue是一致,则print是隶属于if函数,if函数结果决定是否执行print函数。...我们看一下这段代码,本段代码没有任何输出结果,证明print函数从来没有被执行过,为什么没有执行呢!因为printcontinue缩进相同,隶属于if函数内。...为了方便理解,我们调换一下print和continue函数位置 总结一下就是,缩进位置相同,代表并列关系,如果缩进多一个,则是上一级隶属关系。 就酱~下期继续聊聊while和列表和字典那些事!

1.3K50

详解 Pythonenumerate 函数

我们看一个例子: 上面代码输出结果为 正如你所看到那样,它对这个列表进行迭代,从零开始依次增加,产生每个元素索引。...注意到那些从 C 或者 Java 转到 Python 新用户在对一个列表进行 for 循环时候会使用 range(len(---)) 这样语句来追踪元素索引。...我们用代码来展示一下其中原理: 在上面的代码片段中,就像之前例子一样,创建了一个相同枚举对象。但是没有直接使用循环去调用它,而是将它在控制台打印输出。...正如你看到,它是一个枚举对象,其实也就是一个迭代器。就像我之前说那样,当我需要时候,它可以将结果一个一个地产生出来。 为了检查这些按需产生元素,我们需要将其显示出来。...在 for 循环中,你可以利用 Python 数据结构解包功能来使用返回结果,如下所示: Python enumerate 函数关键点 1. enumerate() 函数是 Python 内置函数

1.5K70

从零开始学习PYTHON3讲义(八)列表类型跟冒泡排序

此外你可能会问,既然要求输入数字,为什么没有使用int()或者float()来转换? 原因很简单,题目中只是要求输入、输出,并没有计算要求,所以没有必要一定转换成数字。...这样操作一直循环继续,其中只有当5成为第5个元素,跟第6个元素3比较时候,3更小,因此3和5位置没有调换。并且在之后循环中,使用3跟其后面的43进行比较,操作方式完全相同。 ​...内循环结束边界是n-i-1,n-1容易理解,但是我们讲过了,每次都要再少1次循环,因为已经冒泡到最上面1个元素不需要再被比较,所以内循环使用了外循环变量i,使得个完整循环都比上次更少循环一次。 ​...答案是不能,字符串变量为了提高处理效率,在Python中是共用,换言之,很多程序中,会有很多相同字符串或者部分相同字符串,这时候为了提高效率,Python是会共用这部分字符串所占用内存。...(a) print(a) #最后显示仍然是15,表示函数中修改并没有能传递出函数 ​这部分内容,难度比较大,如果不能完全理解,可以做一般性了解即可。

57420

Tkinter mainloop() 循环逻辑,以及变量为什么不会被重新赋值为初始值?

1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们初始值?...也许对 window.mainloop() 作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们初始值呢?...当用户选择下拉列表选项时,我们会更新画布上文本,并将新文本显示出来。...因此,在上面的代码中,当用户选择下拉列表选项时,hello() 函数会被调用。hello() 函数会更新画布上文本,并将新文本显示出来。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环逻辑,以及变量为什么不会被重新赋值为初始值。

17310

1小时1篇文学会python再做个飞机大战游戏

小媛:懂了,你意思这样就可以标识是这个 if 结构内东西了,是 if 这个结构内部。 小C:是的,运行后将会显示结果。 小媛:修改了 a 值他就不会显示出来了,啥也没显示。...小媛:是的,感觉很相同,然后最后两个在前面空了几个格,并且使用了相同空格,是表示是 while 循环结构内代码吧?...,将我们想要存储值放到一个中括号内,并且值值之间使用逗号进行分隔,这个时候就可以创建一个列表了。...07 列表 for 循环 小C:其实我们还可以使用一个循环使我们列表一个个值进行显示,这个循环叫做 for 循环。 小媛:循环还有内容没学完吗?...小媛:那为什么运行了代码后是一片黑屏? 小C:那是因为我们需要刷新,每次循环完我们都需要刷新整个界面,否则是不会呈现画完效果

90220

Python 中那些令人防不胜防坑(二)

明明我们函数里明明对默认可变参数赋值了,为什么第 1 次调用是初始化状态,第 2 次,第 3 次出现结果就不是我们想要了呢?...猜大多数人看到这个结果都会很懵圈,就算不说结果,很多人看到最开始那行代码,也会觉得没有头脑,下面就让来详细说一下,为什么是这样。...下面结合这个赋值语句形式和文章开头代码详细说一下为什么会出现这样一个我们猜不到结果: 首先是 (target_list "=")+,前面好容易理解,后面带着 + 意味着可以有一个或者多个目标列表...下面我们将 a 字典中 5 键值设置为元组 ({}, 5)来创建循环引用,{...} 指的是 a 引用了相同对象。...至于这句话我们现在不去细究,你需要知道是除非你真的需要,否则不要使用循环引用,相信你肯定不想让自己陷入某些“玄学“麻烦中。 0x04 列表重复 列表重复表面上看起来就是自己多次加上自己。

37110

《看聊天记录都学不会Python到游戏实战?太菜了吧》(4)小白不知道这个知识点将会错漏百出

太菜了吧》(12)python 列表从没想过会那么好用—— 列表 《看聊天记录都学不会Python到游戏实战?...print(‘显示内容’) print(‘a大于10’)在语句前添加了相同空格表示层级?...小C:红色表示最外层层级,所以最外层代码必须不能在语句前进行空格,而以上代码 print(‘a大于10’) print(‘显示内容’) 是属于 if 条件判断正确后需要执行代码,他们拥有相同层级...在python 中,层级我们可以理解成是一个结构内代码,属于这个结构;当我们在语句前添加空格后,这句代码就应该上一个结构之间没有多余其它代码;在此处 print(‘显示内容’) 上一行代码是 print...小媛:运行了,结果如下。输入6条件不对则不显示if 结构内代码,如果输入11条件成立,则会显示出“ a 大于10” 以及“显示内容”。 小C:懂了吧,你先去消化消化吧。

26620

《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

太菜了吧》(12)python 列表从没想过会那么好用—— 列表 《看聊天记录都学不会Python到游戏实战?...小C:返回内容就是指这个函数执行完代码后会有一个结果返回给你。 小媛:能说理解,但是担心屏幕前小伙伴们不理解嘛。 小C:哈哈哈,继续用之前例子。...小媛:唔,懂了,运行处结果了。 小C:那如果我们函数没有返回值你觉得是怎么样?...为什么会显示这个?没有任何东西返回呢。 小C:其实 None 在 python 中就是表示空意思,也就是什么都没有就显示 None 了。 小媛:你意思就是什么都没有就显示 None 了?...那我直接使用 print() 时候为什么不显示?

42040

基础 Python

基础 Python 本指南范围和结果 嗨,是 Virgilio ,你可能已经认识了。 欢迎来到你进入数据科学第一步! 为什么要你学习 Python?...它可以有一个可选 else 语句,用于指定条件为 False 时要执行操作。 如你所见,Python 普通英语非常相似。 在本书这一章中,你还将找到 循环。 .......因此,列表第一个元素位于位置 0,第二个元素位于位置 1,依此类推。 你可以使用 list[index] 获取列表元素。 深入理解切片概念,真的很强大,也很方便。...当字符串一起使用时,它们执行与其数学对应物类似但不相同动作。 继续本书 第 6 章 。 练习 这里 。 下一步 嘿,你!...现在,如果你关注指南,你应该熟悉 Python 基础知识,并且已经能够创建很多东西!但如果没有更多具体小项目练习,你会很快忘记你学到东西。 建议你事情是实现一些小项目。

64210

Python那些熟悉又陌生函数,每次看别人用得很溜,自己却不行?

如果没有有效地管理,过度依赖这些资源会养成坏习惯,让你长期停滞不前。 就个人而言,发现自己多次在网上查询同一个函数,而不是花时间去学习和巩固这个概念。...(item**2) print(out) x = [1,2,3,4] out = [item**2 for item in x] print(out) 请参阅上面两段代码示例,了解您通常如何使用for循环进行列表理解...,以及如何使用一行简单代码创建列表,而不需要使用循环。...如果各个迭代器元素个数不一致,则返回列表长度最短对象相同,利用 * 号操作符,可以将元组解压为列表。 zip语法: zip([iterable, ...])...6)] zip(a,c) # 元素个数最短列表一致 # 输出 [(1, 4), (2, 5), (3, 6)] zip(*zipped) # zip 相反,*zipped 可理解为解压,返回二维矩阵式

1.3K10

一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道

都是用于显示,则我们可以理解成 print printf 功能都是用于显示指定字符串。...10,条件则不会成立,循环不再执行,那么将会显示 10 次 循环…,结果如下: 在 Python 中我们根据其刚述说规律,可以写出以下代码: a=0 while a<10: print...a+=1 以上代码着重查看 a+=1,在 Python 中不允许使用 a++这种写法,此处 a+=1 a++ 最终结果一致,那么此时也就完成了 Python 语言 while 循环编写。...break continue break continue 均是用于循环控制,若循环到第五次时就不再循环可以使用 break。...我们继续看 main 里面的代码,首先创建了一个变量 a并没有赋值,然后赋值变量 a 为 r1 函数,为什么在这个地方要这样写呢?

47130

如何用Python检测视频真伪?

跳着看完了这个视频,确实,他就是在打自己脸。许多评论都说这个视频是伪造也是这么想,但我想确定这个结论。 计划 写一个程序来检测视频中是否有循环。...我们来看看结果: 很好,结果看起来很直观,从下图中可以看出,帧5928帧2048454相同,帧5936帧2048462相同,以此类推。让我们目视确认。 完美。...情况变复杂了 该程序作用是确定相同帧,这样就能知道视频是在循环播放。让我们来看看上面两幅图像后2秒帧(帧5936 + 60和帧2048462 + 60)是什么样。...等等…… 这两个图像看起来是一样啊!但是他们为什么没有标记为匹配呢?我们可以把其中一个帧减去另外一个帧来找出不同之处。这个减法是对每个像素红、绿、蓝值分别做减法。...理论上来说,由于我正在看这段视频有1个循环,所以每桶应该只有2帧。 好,看起来64太极端了,我们几乎没有一个桶在这一点上。

1.5K30

Python 源代码里算法——如何合并多个有序列表并使得结果依然有序?

有 A、B、C、D、E共5个有序列表,如果仅仅使用去年那篇文章方法,那么我们需要先把 AB 合并得到列表 X,然后把 X C 合并得到列表 Y,然后把 Y D 合并得到列表 Z,最后把 Z... E 合并得到最终结果。...先把 A、B 列表元素合并,得到 X;再把 C、D列表元素合并得到 Y、然后 XY 合并得到 Z;最后把 Z E 合并得到最终结果。...你不要自怨自艾,虽然想通这个原理只花了5分钟,但是用了半个小时也没有把代码完整写出来。 所以,我们来看看 Python 源代码,看看它是怎么写。...第一个元素是原来各个列表中最小数字,这个很好理解,将会用来排序。但为什么代码里面有一行order * direction,并放到列表第二项?

1.9K10

理解 UWP 视图概念,让 UWP 应用显示多个窗口(多视图)

---- 为什么 UWP 需要多窗口? 多窗口在传统 Win32 开发当中是司空见惯事儿了,不过个人非常不喜欢,因为 Windows 系统上多窗口太多坑。...微软官方文档中列举了一些例子:例如一边写邮件一边参考以往邮件;一边看正在播放音乐一边浏览播放列表;一次性打开多份文章然后稍后一起阅读等。...CoreDispatcher 是基于消息循环线程调度模型,正是因为有了消息循环,所以此窗口才能一直显示而不被销毁。...在 为了理解 UWP 启动流程,从零开始创建了一个 UWP 程序 一文中,我们也能体会到 CoreApplication 和 CoreWindow 之间关系,了解消息循环在应用中作用。 ?...CoreApplication 有一个 MainView 属性,即我们一开始运行 UWP 应用时那个应用视图。如果我们有不止一个应用视图显示出来,那么这时点击主窗口关闭按钮将不再是关闭,而是隐藏。

1.3K10

细节见真知

1、小心链式操作 一开始看到有人问为什么 Python 语句中True is False is False结果是 False 时,自己也产生了疑问?...=, == 操作符,会产生 True 或 False 结果,这些比较操作符号可以任意链式比较,比如:x < y <= z,x < y y <= z 具有相同优先级,不存在先计算 x < y ,...list_1 这个很好理解,item 只是 for 循环内部一个临时变量,删除这个根本不影响原始列表。...因为:a += b 并不总是 a = a + b 表现相同,类实现 op= 运算符方式也许是不同列表就是这样做:表达式 a = a + [5,6,7,8] 会生成一个新列表,并让 a 引用这个新列表...7、Python 为什么没有 goto 也许你会问这个问题,之前在学习 C 语言时候就非常好奇,为什么要提供 goto,让程序跳转呢,用个函数调用不就行了,是的,Python 语言就回答了这个问题,

43420

python用冒泡法排序_数组冒泡排序c语言函数

count,如果第一次循环后count没有变化,就说明输入是有序序列,这时我们直接return退出循环,这时候时间复杂度为O(n) 扩展知识:冒泡排序还是一种稳定性算法,如果序列中出现两个相同时候...,无论选取最大值,还是最小值进行排序,最后两个相同前后位置都是不变。...首先你要明白xrange是什么,知道了xrange用法,自然后不会再问”-1 -1 -1“这样问题了, xrange返回是一个生成器对象,其结果可以勉强理解为一个列表(range()返回就是一个列表...,但是两者绝不相同,xrange()只有对其遍历时候才会生成具体结果。)...是1里面的代码循环直到把fish_records里最大数排在最后一位然后再运行2吗?也就… (不知道有没有人知道想表达问题,说不清楚,解决了问题采纳回答) 想知道图中代码运行顺序。

1.1K10

笨办法学 Python3 第五版(预览)(三)

这与你在本书前半部分创建函数时所做事情完全相同。 如果没有缩进会发生什么?如果没有缩进,你很可能会产生 Python 错误。...确保你理解了if-statements 中嵌套if-statements 概念。实际上,做一些练习来真正掌握它。 你应该看到结果 这是玩这个小冒险游戏情况。表现得不太好。...在 Python 中,它们称之为“列表”。现在只需称之为“列表”,因为这是 Python 称呼。 为什么 for 循环能够使用尚未定义变量?...然而,while-循环更难正确使用,通常可以用for**-循环完成许多任务。 循环很难。该如何理解它们? 人们不理解循环主要原因是因为他们无法跟随代码“跳跃”。...程序中不同部分中具有相同名称任何变量。这些以后可能会有麻烦。 没有else子句if语句。它们正确吗? 任何可能不会结束while循环

13110
领券