用最少的代码提取多列表的数值-python

a=[['1211','4411','54','2323','1245'],['3356','4512','67','9089','20']]
#需求1:求每组数据第5位减去第3位的值,例如1245-54和20-67,假设a里面还包含着50组同样格式的数据
#需求2:得到每组数据的结果之后,根据数据的正负值进行表达,例如数据1的结果是整数,表达为num1=ture,数据2为负数表达为num2=false
#需求3:提取a里面的某个数值该如何用python表达,例如我想提取9089这个数出来
#需求4:假设我已经得到num1=ture,num2=false,num3,num4到num50的正负表达,然后计算出正和负的百分比

img

各个需要如下,已作注释:

>>> a=[['1211','4411','54','2323','1245'],['3356','4512','67','9089','20'],['1212','4411','54','2323','1248'],['3357','4512','67','9089','22']]
>>> a = [list(map(int,i)) for i in a]  #方便计算,把列表中的字符串都转为整数
>>> print(a)
[[1211, 4411, 54, 2323, 1245], [3356, 4512, 67, 9089, 20], [1212, 4411, 54, 2323, 1248], [3357, 4512, 67, 9089, 22]]
>>> for i,n in enumerate(a):
    a[i][4] -= a[i][2]
# 以上循环即需求1,遍历数据做减法
    
>>> print(a)
[[1211, 4411, 54, 2323, 1191], [3356, 4512, 67, 9089, -47], [1212, 4411, 54, 2323, 1194], [3357, 4512, 67, 9089, -45]]
>>> num = []  #需求2,建议也用列表,不要用num1,num2,...
>>> for n in a:
    if n[4]>0:num.append(True)
    else:num.append(False)
# 需求2 遍历列表,记录数据正负
    
>>> print(num)
[True, False, True, False]
>>> a[1][3] #需求3,取数。二维数组两个下标
9089
#以下为需求4,计算百分比
>>> tRate,fRate = num.count(True)/len(num),num.count(False)/len(num)
>>> tRate,fRate
(0.5, 0.5)
>>> print(f'正负数的百分比各为:{tRate*100}%、{fRate*100}%')
正负数的百分比各为:50.0%、50.0%
>>> 

img

a = [['1211', '4411', '54', '2323', '1245'], ['3356', '4512', '67', '9089', '20']]

# 1
res1 = list(map(lambda x: int(x[-1]) - int(x[2]), a))
print(res1)
#
res2 = [True if i > 0 else False for i in res1]
print(res2)

# 3
value = a[1][-2]
print(value)
# 4
s = [i for i in res2 if i]
print('正数的百分比是:', round(len(s) / len(res2), 2) * 100, '%')
print('负数的百分比是:', round((len(res2) - len(s)) / len(res2), 2) * 100, '%')

'''--result
[1191, -47]
[True, False]
9089
正数的百分比是: 50.0 %
负数的百分比是: 50.0 %
'''