巧妙变换
题目分析来自“待字闺中”微博公众平台。
一个数组,arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'],变换为:arr = ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4']
第一次使用Python编写程序,肯定有许多不妥的地方。
第一种方法:
__author__ = 'ledao'
arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4']
length = len(arr)
halfLen = length/2
counter = halfLen-1
for i in xrange(halfLen, length-1):
local_counter = counter
counter -= 1
if -1 == counter:
break
local_index = i
while local_counter > 0:
val = arr[local_index]
arr[local_index] = arr[local_index-1]
arr[local_index-1] = val
local_index -= 1
local_counter -= 1
print arr
第二种方法:
__author__ = 'ledao'
arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
length = len(arr)
halflen = length/2
for i in xrange(1, halflen):
for j in xrange(0, i):
local_val = arr[halflen+i-1-2*j]
arr[halflen+i-1-2*j] = arr[halflen+i-1-2*j-1]
arr[halflen+i-1-2*j-1] = local_val
print arr
第三种方法:
__author__ = 'ledao'
arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
def finalIndex(old_index, halflen):
return (2*old_index)%(2*halflen-1)
length = len(arr)
modified = ['False']*length
for i in xrange(0,length-1):
if modified[i] == 'False':
firstIndex = i
stored_val = arr[firstIndex]
while True:
local_value = stored_val
if modified[firstIndex] == 'False':
modified[firstIndex] = 'True'
else:
break;
local_finalIndex = finalIndex(firstIndex, length/2)
stored_val = arr[local_finalIndex]
arr[local_finalIndex] = local_value
firstIndex = local_finalIndex
print arr
第四种方法由于水平有限,没看懂……T-T,讲解连接如下,请教高手!
http://www.newsmth.net/bbscon.php?bid=1032&id=47005

浙公网安备 33010602011771号