改进将 [‘abc’, ‘def’, ‘ghi’] 形式的列表分离成 (‘abc’, [‘def’, ‘ghi’]) 的功能?

扎眼的阳光 python 204

原文标题Improve function of seperating lists of form [‘abc’, ‘def’, ‘ghi’] into (‘abc’, [‘def’, ‘ghi’])?

我有以下代码段将列表的第一个元素和其余元素分成两个变量:

test1 = [['p', '(q ∧ ¬(q))', '¬(p)'], ['p', '(¬(p) ∧ ¬(¬(p)))', '¬(p)']]
test2 = ['p', '(q ∧ ¬(q))', '¬(p)', 'q']

def seperate(data, index=None):
    if index == None:
        head = data[0]
        origin = data[1:]
    else:
        head = data[index][0]
        origin = data[index][1:]

    return (head, origin)

print(seperate(test1,0))
print(seperate(test2))
print(seperate(test1,1))

输出:

('p', ['(q ∧ ¬(q))', '¬(p)'])
('p', ['(q ∧ ¬(q))', '¬(p)', 'q'])
('p', ['(¬(p) ∧ ¬(¬(p)))', '¬(p)'])

这很好用。我的问题是函数的外观和感觉,例如通过 if else 语句。

因为在两个 if else 块中几乎完全相同。两个输入的维度略有不同。

我的问题是他们以这种方式优化代码的方法我只有一个分配head = ...和一个分配origin = ...

原文链接:https://stackoverflow.com//questions/71600225/improve-function-of-seperating-lists-of-form-abc-def-ghi-into-abc

回复

我来回复
  • user56700的头像
    user56700 评论

    你可以把它归结为:

    def seperate(data, index=None):
        return(data[0], data[1:]) if index == None else (data[index][0], data[index][1:])
    
    2年前 0条评论