我是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 line*
3
*new line*
4
*new line*
5
5
5
,但是不幸的是,这段代码没有完成这项工作。感谢您的帮助,谢谢。
答案 0 :(得分:2)
您可以简单地通过比较排序列表中的元素来做到这一点,如下所示:
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])
输出:
1
1
1
2
2
3
4
5
5
5
答案 1 :(得分:1)
初始化2^24
变量以跟踪并遍历列表,仅当元素与1.0f
不同时才打印换行符
last
输出
last
答案 2 :(得分:1)
更多幻想; groupby()
:
from itertools import groupby
d = [1,1,1,2,2,3,4,5,5,5]
for _, y in groupby(d):
print('\n'.join(map(str, y)), end='\n\n')
答案 3 :(得分:1)
使用您的代码,您正在使用i
遍历数组d
,然后使用i
访问数组d[i]
的元素,因此访问{{1} }对于前三个迭代为true,然后为false(例如i == d[i]
,i = 2
,因此为d[2] = 1
。此外,不需要(i == d[i]) == False
子句因为您只担心一种情况,所以请使用变量来跟踪数组中的前一个元素,这应该可以解决问题。
elif
编辑:对不起,代码读错了,现在解释应该更好
答案 4 :(得分:1)
如果当前数字不等于前一个数字,则在打印项目之前先打印新行。
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])