Python“数组和限制”

时间:2015-11-16 15:28:50

标签: python list python-3.x

问题: 编写执行以下操作的python代码:

对于给定的正数数组,请执行以下操作:

  1. a)创建一个新数组并将第一个数组中的数字复制到 第二个数组没有复制重复数字。 (第二 数组元素应该是唯一的)

    b)创建第二个数组时,为每3个已添加到数组的数字添加额外的-1整数。 (从第一个数组复制5, 6, 7后,第二个数组内容应为5, 6, 7, -1

  2. 创建第二个阵列后,以每个方式打印到控制台 row只有第二个数组的3个元素。

  3. 限制:

    1. 您不得使用while循环。
    2. 除了在代码开头初始化第一个和第二个数组外,不允许在代码中使用[]字符。
    3. 示例

      输入

      [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]
      

      我不知道如何在不使用括号[]的情况下打印输出。 我希望你能以某种方式帮助我。

2 个答案:

答案 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=' ')

的行