简单的python循环,读取新值后生成新行
我是python新手。我试图在排序列表上应用循环。其思想是,每当循环读取一个与前一个不同的新值时,它都会在它之前生成一行新行。我使用的编辑器是jupyter notebook 我试过的是简单的python循环,读取新值后生成新行,python,loops,for-loop,while-loop,jupyter-notebook,Python,Loops,For Loop,While Loop,Jupyter Notebook,我是python新手。我试图在排序列表上应用循环。其思想是,每当循环读取一个与前一个不同的新值时,它都会在它之前生成一行新行。我使用的编辑器是jupyter notebook 我试过的是 d=[1,1,1,2,2,3,4,5,5,5] for i in d: if i == d[i]: print(i) elif i != d[i]: print(i) print('\n') 预期的输出应该是这样的 1 1 1 *new line* 2 2 *new li
d=[1,1,1,2,2,3,4,5,5,5]
for i in d:
if i == d[i]:
print(i)
elif i != d[i]:
print(i)
print('\n')
预期的输出应该是这样的
1
1
1
*new line*
2
2
*new line*
3
*new line*
4
*new line*
5
5
5
但不幸的是,这段代码没有起到作用。感谢您的帮助,我非常感谢。初始化最后一个变量以跟踪并迭代列表,仅当元素与最后一个不同时才打印换行符
last=d[0]
对于d中的元素:
如果元素=最后:
打印“\n”
最后一个=元素
打印元素
输出
1.
1.
1.
2.
2.
3.
4.
5.
5.
5.
您只需比较排序列表中的元素即可,如下所示:
d=[1,1,1,2,2,3,4,5,5,5]
for i in range(len(d)-1):
if d[i] == d[i+1]:
print(d[i])
else:
print(d[i])
print('\n')
print(d[i])
输出:
更别说了;:
在您的代码中,您使用i来迭代数组d,但随后使用i来访问数组d[i]的元素,因此在前三次迭代中i==d[i]将为真,之后它将为假,例如i=2,d[2]=1,因此i==d[i]==false。此外,不需要elif条款,因为您只担心一个案例。使用一个变量跟踪数组中的前一个元素,这样就可以了
d=[1,1,1,2,2,3,4,5,5,5]
temp = d[0]
for i in d:
if temp != i:
print('\n')
print(i)
temp = i
编辑:很抱歉,代码读错了,现在解释应该更好了如果当前数字不等于上一个数字,请在打印项目之前打印新行
d=[1,1,1,2,2,3,4,5,5,5]
for i in range(len(d)):
if i > 0 and d[i] != d [i - 1]:
print('\n')
print(d[i])
这不会打印数组中的最后一个值。@tdurnford谢谢您的提示。我添加了另一行来打印最后一个元素,这是一个解决方案。我建议查看迭代的范围,并调整if语句中的逻辑。
d=[1,1,1,2,2,3,4,5,5,5]
temp = d[0]
for i in d:
if temp != i:
print('\n')
print(i)
temp = i
d=[1,1,1,2,2,3,4,5,5,5]
for i in range(len(d)):
if i > 0 and d[i] != d [i - 1]:
print('\n')
print(d[i])