i=0
while i<=10:
i+=1
if i==5:
continue
print i*5它打印5的乘法表,并跳过数列中的第5个数字。
发布于 2019-03-12 15:26:56
这是对最短问题的最长可能答案..。
中创建更好的循环
iterablesfor环range中创建更好的循环
iterablesFor循环可以对任何可迭代性进行迭代。什么是可迭代的?迭代是一个可以迭代的对象。
更严重的是,可迭代对象本身就是其他对象的序列。列表是可迭代的,但当您更多地了解python时,它并不是唯一的列表。
for循环for循环可以迭代一个可迭代(在本例中是一个列表),如下所示:
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(i)range前面的例子很难看,因为: 1.硬编码的值不易更改,容易出错。2.我们将前10个正整数存储在内存中,它占用144个字节,但不能扩展,就好像我想要前1000000个正整数一样,我需要内存的9 mo。
这就是range进来的地方,它是一种可迭代的,不占用太多空间,并且经常用于循环中:
for i in range(10):
print(i)注意:在早期版本的python中,range创建了一个列表,与第一个示例相当。
如果我只想要22到42之间的数字,跳过每一个奇数呢:
for i in range(22, 43, 2):
# range(start, end, step) <- this is a comment
print(i)注意:range(22, 43)实际上不包括43个
但是等等,我不想要一个5在我的范围内,我怎么能移除它?
for i in range(10):
if i==5:
continue
print(i)延续的技术术语是“丑陋的”。
相反,您可以使用以下内容:
for i in range(10):
if i!=5:
print(i)这更好,但不是我想给你看的。我想向你们展示的是清单上的理解:
l = [n for n in range(10) if n!=5]
for i in l:
print(i)列表是可迭代的记忆。嗯,我已经创建了一个列表,其中包含了除5以外的前10个数字。
还请记住,我曾经说过,由于内存效率低下,列表是一个非常糟糕的选择。幸运的是,我们有了更好的解决方案,生成器表达式:
l = (n for n in range(10) if n!=5)
for i in l:
print(i)什么改变了?括号!就这么简单。
但是等等,我想做5桌,我怎么做呢?
l = (n for n in range(10) if n!=5)
for i in l:
print(i*5)是的,这很管用,但如果.
l = (n*5 for n in range(10) if n!=5)
for i in l:
print(i)是的,这也有效..。
for i in range(10):
if i!=5:
print(i*5)的最短方法是什么?
print('\n'.join(str(n*5) for n in range(10) if n!=5))
or
print(*(n*5 for n in range(10) if n!=5), sep='\n')随着您了解更多关于python的知识,您可能会倾向于使用第二个版本。但这不是奏鸣曲,因为它至少违反了提摩太的六条诫命:
漂亮比ugly.<好,显式比implicit.好,简单比complex.<好,平面比complicated.好,稀疏比nested.<好,dense.<可读性好,counts.<特例不够特殊,不足以突破rules.,尽管实用性优于purity.错误不应通过silently.,除非在歧义面前明确silenced.。拒绝guess.的诱惑--最好只有一种--做it.<的明显方式--虽然这种方式一开始可能并不明显,除非您现在的Dutch.比never.好--尽管如果实现很难解释,那么永远也不会比正确的now.更好,如果实现很容易解释的话,这是一个不好的idea.,可能是一个很好的idea.名称空间是一个很棒的主意--让我们做更多的事情吧!
在家里读import this
某些循环技术在某些情况下可能更合适,但至少现在您知道了这些技术是什么。
发布于 2019-03-12 11:30:36
我不使用Python编程,但这是一个非常简单的问题。这是密码,我会帮你把它分解
for i in range(0, 10):
if i != 5:
print (i*5)让我们再来看看这个。第一行是for循环播放。这类循环有点像while循环,但是它为您创建并增加了变量,并且更难实现无限大。该行的range()部分只表示从0开始i,并将其增加1直到达到10。
下一行只是检查是否是i == 5,如果是的话,它将不会打印结果。
如果i*5不是5,则最后一行只打印i。
https://codereview.stackexchange.com/questions/215252
复制相似问题