简单的python循环,一旦读取了新值,便会换行

时间:2019-03-19 16:43:08

标签: 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 line*
3
*new line*
4
*new line*
5
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])