有a1,a2,a3,a4,四个数组,四个数组重新组合成一个数组(A),间隔是10个元素

好久没折腾Py了,这是去年年初2019.3月发在Q空间中的一个记录,因不从事这个,并且被在工厂耽误10几年,所以很少写Blog在这里,感觉这里比较正式且方便一些,
而在Q空间中只是随意性的记载,但发布图片总是需要另外保存再上传不能直接粘贴很不方便、耽误时间,cnblogs相对比较方便。

A_Combine = Array1[10]+Array2[10]+Array3[10]+Array4[10] 

###============下面是Dephi群中别人的问题,我理解了一下问题描述如下,用PY实现====================
 '''     FileName = D:\Py_eg\egArray-20190328.py
1)  对列表的操作(zip,chain,类型转换)
2)函数及装饰器的应用
---------------------------------------------------------------------------------------------------------------------------------------
请教一下,有a1,a2,a3,a4,四个数组,每个数组长度100,不一定是可用range(start,end,step)生成的数据,是这个意思
有A数组,长度400,
想取
a1的1——10元素放到A的1——10
a2的1——10放到A的11——20,
a3的1——10放到A的20——30,
a4的1——10放到A的30——40,
就是四个数组重新组合成一个数组(A),间隔是10个元素

-------------------------------------------------------------------------------------------------------------------------------------

 1 print('*'*15,'a1数组','*'*15)
 2 import string
 3 from random import randint
 4 #a1 = list(range(0,10,1))      ### a1 = [randint(0,100) for x in range(10)]
 5 a1 = list(randint(0,100) for x in range(10))  #改进版a1
 6 print('a1 = ',a1)
 7 ls1=[str(i) for i in a1]     ###此处转换成字符串的目的,只是假定要求的条件是字符串
 8 print('a1 = ',ls1)
 9 
10 print('*'*15,'a2数组','*'*15)
11 #a2 = list(range(11,20,1))
12 a2 = list(randint(0,100) for x in range(10))  #改进版a2
13 print('a2 = ',a2)
14 ls2=[str(i) for i in a2]
15 print('a2 = ',ls2)
16 
17 
18 print('*'*15,'a3数组','*'*15)
19 #a3 = list(range(0,10,1))
20 a3 = list(randint(0,100) for x in range(10))  #改进版a3
21 print('a3 = ',a3)
22 ls3=[str(i) for i in a3]
23 print('a3 = ',ls3)
24 
25 
26 print('*'*15,'a4数组','*'*15)
27 #a4 = list(range(0,10,1))
28 a4 = list(randint(0,100) for x in range(10))  #改进版a4
29 print('a4 = ',a4)
30 ls4=[str(i) for i in a4]
31 print('a4 = ',ls4)
32 
33 
34 print('===== 方法 一,练习水平1 =====')
35 a1.extend(a2)  ###怎样能做到这种形式/但不用itertools.chain形式,当然后面写法是不对的((a1.extend(a2)).extend(a3)).extend(a4) 
36 a1.extend(a3)
37 a1.extend(a4)
38 print('A_Combine = ',a1)
39 # def enumerate_A():
40 #  for i,value4 in enumerate(A_combine):
41 #   print('A = ' +str(A_combine))
42 # enumerate_A()
43 
44 print('===== 方法 二,练习水平2, 方法Ok =====')
45 import itertools
46 A_After_Combine_2 = []
47 for j in itertools.chain(ls1,ls2,ls3,ls4):
48     A_After_Combine_2.append(j)
49 print(A_After_Combine_2)
50 
51 
52 
53 print('===== 方法 三 ,重复的、低劣=====')
54 print('=====a1函数形式=====')
55 def enumerate_fn_a1():
56  a1 = list(range(1,11,1))
57  for i,value1 in enumerate(ls1):     ###思考:  此处需将4个列表的value一起迭代 (zip可成字典迭代,itertools.chain()可成链接)
58   #print('索引:' + str(i), '值 = ' +str(value))
59   print('A' + str([i+1]), ' = ' +str(value1))
60 enumerate_fn_a1()
61 
62 print('=====a2函数形式=====')
63 def enumerate_fn_a2():
64  a2 = list(range(11,21,1))
65  for i,value2 in enumerate(ls2):
66   #print('索引:' + str(i), '值 = ' +str(value))
67   print('A' + str([i+11]), ' = ' +str(value2))
68 enumerate_fn_a2()
69 
70 print('=====a3函数形式=====')
71 def enumerate_fn_a3():
72  a3 = list(range(21,31,1))
73  for i,value3 in enumerate(ls3):
74   #print('索引:' + str(i), '值 = ' +str(value))
75   print('A' + str([i+21]), ' = ' +str(value3))
76 enumerate_fn_a3()
77 
78 print('=====a4函数形式=====')
79 def enumerate_fn_a4():
80  a4 = list(range(31,41,1))
81  for i,value4 in enumerate(ls4):
82   #print('索引:' + str(i), '值 = ' +str(value))
83   print('A' + str([i+31]), ' = ' +str(value4))
84 enumerate_fn_a4()
85 
86 #list(enumerate_fn_a4)
87 
88 ### 想定义一个函数A_Combine_fun,将返回值当作新定义函数A_Combine_fun的参数;然后再执行此函数赋值一个数组
89 #练习对装饰器的使用(装饰器实际上就是一个函数)

运行结果:

 1 *************** a1数组 ***************
 2 a1 =  [16, 41, 56, 70, 12, 50, 28, 34, 60, 67]
 3 a1 =  ['16', '41', '56', '70', '12', '50', '28', '34', '60', '67']
 4 *************** a2数组 ***************
 5 a2 =  [63, 87, 93, 94, 60, 6, 6, 32, 89, 2]
 6 a2 =  ['63', '87', '93', '94', '60', '6', '6', '32', '89', '2']
 7 *************** a3数组 ***************
 8 a3 =  [96, 71, 24, 82, 70, 64, 18, 82, 97, 9]
 9 a3 =  ['96', '71', '24', '82', '70', '64', '18', '82', '97', '9']
10 *************** a4数组 ***************
11 a4 =  [86, 30, 10, 9, 32, 60, 31, 56, 72, 56]
12 a4 =  ['86', '30', '10', '9', '32', '60', '31', '56', '72', '56']
13 ===== 方法 一,练习水平1 =====
14 A_Combine =  [16, 41, 56, 70, 12, 50, 28, 34, 60, 67, 63, 87, 93, 94, 60, 6, 6, 32, 89, 2, 96, 71, 24, 82, 70, 64, 18, 82, 97, 9, 86, 30, 10, 9, 32, 60, 31, 56, 72, 56]
15 ===== 方法 二,练习水平2, 方法Ok =====
16 ['16', '41', '56', '70', '12', '50', '28', '34', '60', '67', '63', '87', '93', '94', '60', '6', '6', '32', '89', '2', '96', '71', '24', '82', '70', '64', '18', '82', '97', '9', '86', '30', '10', '9', '32', '60', '31', '56', '72', '56']
17 ===== 方法 三 ,重复的、低劣=====
18 =====a1函数形式=====
19 A[1]  = 16
20 A[2]  = 41
21 A[3]  = 56
22 A[4]  = 70
23 A[5]  = 12
24 A[6]  = 50
25 A[7]  = 28
26 A[8]  = 34
27 A[9]  = 60
28 A[10]  = 67
29 =====a2函数形式=====
30 A[11]  = 63
31 A[12]  = 87
32 A[13]  = 93
33 A[14]  = 94
34 A[15]  = 60
35 A[16]  = 6
36 A[17]  = 6
37 A[18]  = 32
38 A[19]  = 89
39 A[20]  = 2
40 =====a3函数形式=====
41 A[21]  = 96
42 A[22]  = 71
43 A[23]  = 24
44 A[24]  = 82
45 A[25]  = 70
46 A[26]  = 64
47 A[27]  = 18
48 A[28]  = 82
49 A[29]  = 97
50 A[30]  = 9
51 =====a4函数形式=====
52 A[31]  = 86
53 A[32]  = 30
54 A[33]  = 10
55 A[34]  = 9
56 A[35]  = 32
57 A[36]  = 60
58 A[37]  = 31
59 A[38]  = 56
60 A[39]  = 72
61 A[40]  = 56
62 [Finished in 0.3s]

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------
2021.1.15日,在看一个范例时,本书除了 第5章  Python编程进阶,可稍读下,相对太基础了。
相比起来更喜欢 《Introducing Python_CN_Bill Lubanovic_Python语言及其应用》现已有第2版

用描述式生成同样的表只需要一行代码:rands = [random() for i in range(100000)]
编程时应注意避免在操作中建立大量组合对象。如果发现程序效率低,应该考虑计算中是否构造了大量组合对象,这些构造是否必要.

  

 

 

 

 

 

 

 

 

 

 

posted @ 2020-03-20 10:50  CDPJ  阅读(421)  评论(0编辑  收藏  举报