Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中摆式排列的打印数组_Python_Arrays_Python 3.x - Fatal编程技术网

python中摆式排列的打印数组

python中摆式排列的打印数组,python,arrays,python-3.x,Python,Arrays,Python 3.x,我应该按钟摆排列打印阵列。对于某些输出,我的答案是正确的,但对于某些输出,我的答案是错误的。为什么会这样 test_case = int(input()) for i in range(0, test_case): n = int(input()) arr = [int(i) for i in input().split()] arr.sort() arr1 = [0] * n mid = int((n - 1) / 2) arr1[mid] =

我应该按钟摆排列打印阵列。对于某些输出,我的答案是正确的,但对于某些输出,我的答案是错误的。为什么会这样

test_case = int(input())
for i in range(0, test_case):
    n = int(input())
    arr = [int(i) for i in input().split()]
    arr.sort()
    arr1 = [0] * n
    mid = int((n - 1) / 2)
    arr1[mid] = arr[0]
    i = 1
    j = 1
    for i in range(1, mid + 1):
        arr1[mid + i] = arr[j]
        j += 1
        arr1[mid - i] = arr[j]
        j += 1
    if (int(n % 2) == 0):
        arr1[mid + i] = arr[j]

    print(' '.join(map(str, arr1)))
在这里,我尝试了两个测试用例。对于第一个测试用例,我的输出是正确的,但是对于第二个测试用例,大小为8的数组我的输出是错误的

2 #no. of test cases
5 # size of 1st array
4 1 3 2 5 #1st Input
5 3 1 2 4 # correct output
8  #size of 2nd array
539 161 985 856 166 29 726 590 #2nd input
856 590 166 29 161 539 985 0  # Wrong output
第二个测试用例的预期输出为:

856 590 166 29 161 539 726 985
为什么不仅仅是这样:

lst = [539, 161, 985, 856, 166, 29, 726, 590]

def pendulum(lst):
    srt = sorted(lst)
    return list(reversed(srt[0::2])) + srt[1::2]

ret = pendulum(lst)
# [856, 590, 166, 29, 161, 539, 726, 985]
对列表进行排序,然后取其他元素并将其组合到新列表中

注意,函数接受列表并返回一个列表;您可能需要首先将字符串拆分为一个列表lst=[inti for i in input.split],然后您可能希望在末尾转换结果:strg=''.joinstri for i in ret

在您的代码中,如果n=8,您将得到mid=3;我将从1到3不等,因此中间+1为什么不只是这个:

lst = [539, 161, 985, 856, 166, 29, 726, 590]

def pendulum(lst):
    srt = sorted(lst)
    return list(reversed(srt[0::2])) + srt[1::2]

ret = pendulum(lst)
# [856, 590, 166, 29, 161, 539, 726, 985]
对列表进行排序,然后取其他元素并将其组合到新列表中

注意,函数接受列表并返回一个列表;您可能需要首先将字符串拆分为一个列表lst=[inti for i in input.split],然后您可能希望在末尾转换结果:strg=''.joinstri for i in ret

在您的代码中,如果n=8,您将得到mid=3;我将从1到3不等,因此是中间+1 修改了你的代码。它起作用了

您编写的代码将在mid+i位置添加最后一个元素 这里

i=从1到中间+1位置的迭代也将与中间=lenarr-1/2相同

对于偶数长度的数组,假设[5,4,3,1,2,6]

arr[mid+i]=最后一个位置

所以对于偶数长度的数组,只需将+1添加到索引位置,这将给出最后一个位置

t=int(input())
for x in range(t):
    l=list(map(int,input().split()))
    l.sort()
    n=len(l)
    j=[None]*n
    c=1
    if(n%2!=0):
        c=1
        d=1
        z=(n//2)
        j[z]=l[0]
        for k in range(2,n+1,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    else:
        c=1
        d=1
        z=((n//2)-1)
        j[z]=l[0]
        for k in range(2,n,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    print(j)
修改了你的代码。它起作用了

您编写的代码将在mid+i位置添加最后一个元素 这里

i=从1到中间+1位置的迭代也将与中间=lenarr-1/2相同

对于偶数长度的数组,假设[5,4,3,1,2,6]

arr[mid+i]=最后一个位置


因此,对于偶数长度的数组,只需将+1添加到索引位置,这将为您提供最后一个位置。

欢迎使用StackOverflow。您是否在寻找更好的解决方案,如当前的答案?或者你真的想知道你的代码有什么问题吗?欢迎来到StackOverflow。您是否在寻找更好的解决方案,如当前的答案?或者你真的想知道你的代码有什么问题吗?谢谢你的解决方案。但是如果您能告诉我给定的代码有什么问题,那将非常有帮助。谢谢您提供的解决方案。但是如果你能告诉我给定的代码有什么问题,那将非常有帮助。请在你的答案中添加一些细节,解释你的代码是如何解决问题的。这将有助于其他人在回答中添加一些细节,以解释代码如何解决问题。这将有助于其他人
t=int(input())
for x in range(t):
    l=list(map(int,input().split()))
    l.sort()
    n=len(l)
    j=[None]*n
    c=1
    if(n%2!=0):
        c=1
        d=1
        z=(n//2)
        j[z]=l[0]
        for k in range(2,n+1,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    else:
        c=1
        d=1
        z=((n//2)-1)
        j[z]=l[0]
        for k in range(2,n,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    print(j)
t=int(input())
for x in range(t):
    l=list(map(int,input().split()))
    l.sort()
    n=len(l)
    j=[None]*n
    c=1
    if(n%2!=0):
        c=1
        d=1
        z=(n//2)
        j[z]=l[0]
        for k in range(2,n+1,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    else:
        c=1
        d=1
        z=((n//2)-1)
        j[z]=l[0]
        for k in range(2,n,2):
            j[z-d]=l[k]
            d+=1
        for k in range(1,n,2):
            j[z+c]=l[k]
            c+=1
    print(j)