问题: 编写执行以下操作的python代码:
对于给定的正数数组,请执行以下操作:
a)创建一个新数组并将第一个数组中的数字复制到 第二个数组没有复制重复数字。 (第二 数组元素应该是唯一的)
b)创建第二个数组时,为每3个已添加到数组的数字添加额外的-1整数。 (从第一个数组复制5, 6, 7
后,第二个数组内容应为5, 6, 7, -1
)
创建第二个阵列后,以每个方式打印到控制台 row只有第二个数组的3个元素。
限制:
while
循环。[
和]
字符。示例:
输入:
[5, 3, 20, 7, 32, 5, 2, 4, 19, 5, 45, 1, 7, 3, 2, 9, 5, 7, 6, 27, 74 ]
结果数组:
[5, 3, 20, -1, 7, 32, 2, -1, 4, 19, 45, -1, 1, 9, 6, -1, 27, 74]
输出:
5 3 20
7 32 2
4 19 45
1 9 6
27 74
我的工作:
A=[5,3,20,7,32,5,2,4,19,5,45,1,7,3,2,9,5,7,6,27,74]
B=[]
counter=0
n=1
for i in A:
if i not in B:
B.append(i)
counter+=1
if counter==3*n:
B.append(-1)
n+=1
print(B)
这就是我作为输出得到的:
[5, 3, 20, -1, 7, 32, 2, -1, 4, 19, 45, -1, 1, 9, 6, -1, 27, 74]
我不知道如何在不使用括号[]
的情况下打印输出。
我希望你能以某种方式帮助我。
答案 0 :(得分:1)
你非常接近!您只需添加另一个for
循环即可打印元素:
如果您i == -1
打印一个新行以分隔这些,如果不是,则打印由B
(空格字符)分隔的列表end=" "
的内容:
for i in B:
if i == -1:
# prints a new line character
# print("\n") if you need a blank line between entries
print()
else:
# end specifies how your elements will be seperated
print(i, end=" ")
使用您的输入,打印:
5 3 20
7 32 2
4 19 45
1 9 6
27 74
答案 1 :(得分:0)
你可以在一个简单的for循环中通过值迭代Python中的数组(以及任何其他可迭代的),因此
for element in B:
if element == -1:
print #this will just print new line marker
else:
print element, #notice the comma - it will not add new line marker
将连续打印B
容器的元素,并在-1
个元素上添加新行。
此处使用的打印语义假定为Python 2.X 。如果您使用的是Python 3.X,则需要将它们更改为适当的语句,以打印新行print()
和不行print(element, end=' ')