我有一个包含8位整数的列表,其中每个整数代表一个标志.例如:
qc = [11221427, 23414732, 144443277,...]
Run Code Online (Sandbox Code Playgroud)
我想创建8个新变量,其中第一个变量是所有数字的第一个数字,依此类推.例如:
qc1 = [1,2,1]
qc2 = [1,3,4]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码计算它:
qc_str = [str(e) for e in qc]
k,l = 0,0
for item in qc_str:
qc1[k] = int(qc_str[k][l])
qc2[k] = int(qc_str[k][l+1])
qc3[k] = int(qc_str[k][l+2])
qc4[k] = int(qc_str[k][l+3])
qc5[k] = int(qc_str[k][l+4])
qc6[k] = int(qc_str[k][l+5])
qc7[k] = int(qc_str[k][l+6])
qc8[k] = int(qc_str[k][l+7])
k += 1
Run Code Online (Sandbox Code Playgroud)
运行100,000行需要花费大量时间.是否有更好或更快的方式.任何想法将不胜感激.
这是一种方式:
qc = [11221427, 23414732, 144443277]
lst = [list(map(int, i)) for i in zip(*map(str, qc))]
# [[1, 2, 1],
# [1, 3, 4],
# [2, 4, 4],
# [2, 1, 4],
# [1, 4, 4],
# [4, 7, 3],
# [2, 3, 2],
# [7, 2, 7]]
Run Code Online (Sandbox Code Playgroud)
如果你真的需要这些作为单独的变量,使用lst[idx]或字典{i: j for i, j in enumerate(lst, 1)}.