【发布时间】:2019-05-07 05:54:06
【问题描述】:
我的程序有问题,希望有人能帮我解决这个问题。基本上我有一个包含 20 个值的随机生成列表,我想将重复的值放在括号之间(例如,如果列表是 [1,2,2,4,5] 它应该显示 1 ( 2 2 ) 4 5 )
现在这是我的代码,只有在最后没有重复值的情况下才有效,因为列表索引超出了范围。我该如何解决这个问题?
from random import randint
lanci = []
for i in range(20):
x = randint(1,6)
lanci.append(x)
print(lanci)
i=0
while i < len(lanci)-1):
if lanci[i] == lanci[i+1]:
print("(",end=" ")
print(lanci[i],end=" ")
while lanci[i]==lanci[i+1]:
i = i + 1
print(lanci[i],end=" ")
print(")",end=" ")
else:
print(lanci[i],end=" ")
i = i + 1
【问题讨论】:
-
首先,您需要修复整个提供的 sn-p 中的语法错误。例如: print(lanci[i],end=" " 不以 ) 结尾。 while i
-
好的,谢谢我修复了它们,虽然我没有复制粘贴,但我复制了它,这就是它有语法错误的原因。但问题是,如果列表的最后一个值在重复序列中,它会给我索引 i 超出范围,但我无法修复它。
-
在
itertools.groupby的帮助下,我将开始将[1, 2, 2, 4, 5]变成[1, [2, 2], 4, 5]。然后应该是一个简单的练习,将整数转换为字符串,将子列表转换为带括号的序列。 (就像我打字时 tobias_k 所做的那样:)) -
[1,2,2,4,5,6]所需的输出是什么?
标签: python arrays python-3.x list