如何在while循环中选择首先循环的值

时间:2015-03-04 01:29:25

标签: python sql database

所以我有一个数组,我想在while循环中附加某些值,但我希望它们按照一定的顺序。它是这样的:

num = [1,2,3,4,5]
count = -1
while count < 2:
    for x in num:
        c.execute('SELECT column FROM table WHERE restriction = %s;', (x + count,))
        rows = c.fetchall()
        array = []
        for row in rows:
            array.append(row[0])
    count += 1

但我希望count = 0的值在数组

中排在第一位

我知道我可以把它分开但是有没有办法以这种格式做到并保持简短?

编辑:不要担心代码本身只是一个例子而不是我正在使用的代码我只想知道我是否可以首先循环count = 0然后count = -1然后count = 1使得在最终数组中,count = 0的结果将在列表中排在第一位。

1 个答案:

答案 0 :(得分:1)

我认为你正在努力实现这样的目标。在主循环中,如果count == 0,则仅将项存储在数组中。否则将它们放入临时数组中。然后在主循环结束后,将临时内容移动到主数组的末尾。但是你的代码仍然是一个糟糕的解决方案*并且不知道你想要实现什么,这是我能提供的最好的。

num = [1,2,3,4,5]
count = -1
array = []
tempArray = []

while count < 2:
    for x in num:
        c.execute('SELECT column FROM table WHERE restriction = %s;', (x + count,))
        rows = c.fetchall()
        for row in rows:
            if count == 0:
                array.append(row)
            else:
                tempArray.append(row)
    count += 1

for item in tempArray:
     array.append(item)

*我说解决方案很差,因为你的代码很难理解。我猜你正在努力做到这一点:

array = []

for x in range(5):
    c.execute('SELECT column FROM table WHERE restriction = %s;', (x + 1)
    rows = c.fetchall()
    for row in rows:
        array.append(row)

# now get your remaining data

我认为你真正需要做的是写一个方法:

def getRows(x):
    c.execute('SELECT column FROM table WHERE restriction = %s;', (x)
    rows = c.fetchall()
    return rows

for count in range(4):
    array.append(getRows(count + 1))

for count in range(4):
    array.append(getRows(count))

for count in range(4)
    array.append(getRows(count + 2))

然后你可以重写为:

def getRows(x):
    c.execute('SELECT column FROM table WHERE restriction = %s;', (x)
    rows = c.fetchall()
    return rows

def addToArray(modifier):
   for count in range(4)
       array.append(getRows(count + modifier))

然后调用它3次:

   addToArray(1)
   addToArray(0)
   addToArray(2)