Python中两个嵌套字符串列表之间的减法

2024-05-07 02:49:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遵循嵌套列表的this问题中使用的结构,但是我很困惑,不知道如何解决它。假设要减去两个列表a = ['5', '35.1', 'FFD']b = ['8.5', '11.3', 'AMM'],下面的代码用于得到等式c=b-a:

diffs = []
for i, j in zip(a, b):
    try:
        diffs.append(str(float(j) - float(i)))
    except ValueError:
        diffs.append('-'.join([j, i]))
>>> print(diffs)
['3.5', '-23.8', 'AMM-FFD']

我的问题是,如何通过考虑以下结构得到C=B-A:

A = [['X1','X2'],['52.3','119.4'],['45.1','111']]

B = [['Y1','Y2'],['66.9','65'],['99','115.5']]

C = [['Y1-X1','Y2-X2'],['14.6','-54.4'],['53.9','4.5']]

如何确定每个内部列表的第一个和第二个元素,例如:

Array 1 = ['Y1-X1', '14.6', '53.9']
Array 2 = ['Y2-X2', '-54.4', '4.5']

我很感激你的帮助。在


Tags: 代码列表floatthis结构arrayx1x2
3条回答
diffs=[]
for sub_b, sub_a in zip(b, a):
    curr = []
    for atom_b, atom_a in zip(sub_b, sub_a):
        try:
            curr.append(float(atom_b) - float(atom_a))
        except ValueError:
            curr.append('-'.join([atom_b, atom_a]))
    diffs.append(curr)
ans1, ans2 = zip(*diffs)

zip函数也可用于解压iterables。在

好吧,如果保证列表总是两层嵌套的,你只需再添加一个循环:

diffs_lists = []
for i, j in zip(a, b):
    diffs = []
    for k, l in zip(i, j):
        try:
            diffs.append(str(float(k) - float(l)))
        except ValueError:
            diffs.append('-'.join([k, l]))
    diffs_lists.append(diffs)

要按您的要求将结果分为两部分,只需使用zip:

^{pr2}$

您只需要另一个级别的循环:

res = []
for a, b in zip(A, B):
    diffs = []
    res.append(diffs)
    for i, j in zip(a, b):
        try:
            diffs.append(str(float(j) - float(i)))
        except ValueError:
            diffs.append('-'.join([j, i]))
print(res)
#[['Y1-X1', 'Y2-X2'], ['14.600000000000009', '-54.400000000000006'], ['53.9', '4.5']]
print(list(zip(*res)))
#[('Y1-X1', '14.600000000000009', '53.9'), ('Y2-X2', '-54.400000000000006', '4.5')]

相关问题 更多 >