【问题标题】:python constantly split an arraypython不断拆分数组
【发布时间】:2016-02-20 13:50:04
【问题描述】:
import random
i=1
a=[]
while(i<=10000):
    b=random.randint(0,9999)
    a.append(b)
    i=i+1
print(a)

def kgsorting(a):
    k=1
    sum=a[0]
    while(k<=(len(a)-1)):
        sum=sum+a[k]
        k=k+1
    avg=sum/len(a)
    return avg

#print(kgsorting(a))

def splitlist(a):
    i=0
    b=[]
    c=[]
    avg=kgsorting(a)
    while(i<=(len(a)-1)):
        if(a[i]>=avg):
            b.append(a[i])
        else:
            c.append(a[i])
        i=i+1
    return c,b


(c,b)=splitlist(a)
#print(f+g)
#g=int(input())

i=1
while(i<=1):
    (f,g)=splitlist(c)
    (h,y)=splitlist(b)
    i=i+1
flen=len(f)
glen=len(g)
hlen=len(h)
ylen=len(y)      

i=1
while(i<=flen):
    k=0
    while(k<=(flen-2)):
        if (f[k+1]<f[k]):
            temp=f[k+1]
            f[k+1]=f[k]
            f[k]=temp
        k=k+1
    i=i+1
#print(b)


i=1
while(i<=glen):
    k=0
    while(k<=(glen-2)):
        if (g[k+1]<g[k]):
            temp=g[k+1]
            g[k+1]=g[k]
            g[k]=temp
        k=k+1
    i=i+1
#print(c)
#print((c+b))


i=1
while(i<=hlen):
    k=0
    while(k<=(hlen-2)):
        if (h[k+1]<h[k]):
            temp=h[k+1]
            h[k+1]=h[k]
            h[k]=temp
        k=k+1
#print(b)


i=1
while(i<=ylen):
    k=0
    while(k<=(ylen-2)):
        if (y[k+1]<y[k]):
            temp=y[k+1]
            y[k+1]=y[k]
            y[k]=temp
        k=k+1
    i=i+1
#print(c)
print((f+g+h+y))

wer=int(input())

嗨!我正在尝试在python 3中编写一个排序代码。基本上我想将一个由1000个随机整数组成的数组拆分为不相等的部分。条件是列表的项目是否低于或高于所有数字的平均值。然后我使用冒泡排序 4 次对两个列表进行排序。这种排序似乎比冒泡排序更快,我想拆分例如 2,4,8,16,32,64...n 而不做我所做的事情4个拆分的代码。显然,拆分越多越快,所以我想要n个拆分。我还没有找到一种方法来递归地或通过循环或其他方式来做到这一点。你知道该怎么做吗? 谢谢 编辑:一开始的程序从随机整数创建一个列表,然后计算平均值,然后将列表 a 拆分为 c、b 列表,然后将 c 拆分为 f、g 和 b 到 h、y 列表。最后我有 4 个列表我对每个列表使用了 4 次冒泡排序来对它们进行排序,最后我合并了 4 个列表。有谁知道如何进行 n 拆分以列出 a?

【问题讨论】:

  • 用输入和期望的结果来构建您的问题可能更容易,而不是引导我们完成您的方法(通过评论代码来做到这一点......)。您的 while 循环复制/粘贴可能是您应用的功能,然后我们可以进一步完善它,但我不确定我是否理解您最终想要得到的东西,这使得很难建议正确的方法,而不仅仅是语法正确的代码。

标签: python arrays sorting


【解决方案1】:

用于执行 n 次拆分以列出 a 的递归循环需要在每次拆分列表时创建 2 个列表。为此,将创建一个方法,该方法接收一个列表并将其分成两部分,然后为这些部分再次调用它。

另一种方法是将列表简单地拆分为 n 个片段,但这也只有在您有 n 个列表时才有效 Python: fastest way to create a list of n lists 展示了如何使用

d = [[] for x in xrange(n)]

虽然这会创建一个列表列表,但它可以通过一些工作来完成

然后做一个你可以做的递归循环

def recursiveLoop(list, n):
    d = [[] for x in xrange(n)]
    index = 0
    while(index < len(list)/2): #splits the list
        d.append(list[index])
        index++
    recursiveLoop(d, n/2)

我将检查以确保 ^^ 有效,因为目前我认为它没有,但想法就在那里,只需拆分列表并调用相同的函数再次拆分它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多