【问题标题】:Building a python function that modifies lists with tuples构建一个用元组修改列表的python函数
【发布时间】:2020-03-18 15:24:05
【问题描述】:

大家好,我遇到了当前的问题:

list_a = [('abc d',1), ('abc d',2) ,('acb e',3) ,('b',1),('b',2),('b',3)]

来自 list_a,我正在尝试构建一个返回以下输出的函数...

基本上我想保留所有以字符串“a”开头的 [0] 值,并对其各自的 [1] 进行修改。

修改是一个简单的 [1] x 2 ...

('abc d',1) --> ('abc d',2)
('abc d',2) --> ('abc d',4)
('act d',3) --> ('abc d',6)

其他对保持原样,因为它们在 [0] 位置以“b”开头。

期望的输出:

[('abc d',2), ('abc d',4) ,('acb e',6) ,('b',1),('b',2),('b',3)]

提前谢谢你:)

【问题讨论】:

  • 到目前为止,您尝试了哪些方法,您遇到了哪些具体问题?
  • 嗨 Axe319,感谢您的提问。我试着先把它们拆开,然后以正确的顺序再次压缩它们。但是这个过程可以在我目前的代码中的其他迭代过程中工作。工作:(
  • 那么,如果x[0]a 开头,则将x[1] 乘以2?
  • "对其各自的 [1] 进行修改。"您想更改元组,还是可以创建新元组?

标签: python python-3.x function tuples iterable-unpacking


【解决方案1】:

只使用列表推导

list_b = [(i[0],i[1] * 2) if i[0].startswith("a") else i for i in list_a ]

【讨论】:

    【解决方案2】:

    您可以通过以下方式进行。

    list_a = [('abc d',1), ('abc d',2) ,('acb e',3) ,('b',1),('b',2),('b',3)]
    
    def foo(list_a):
        output=[]
        for x,y in list_a:
            if x[0] =="a":
                output.append((x,2*y))
            else:
                output.append((x,y))
        return output
    

    【讨论】:

    • 这不会检查第一个元素是否以“a”开头
    猜你喜欢
    • 2021-06-26
    • 2016-04-05
    • 1970-01-01
    • 2015-01-31
    • 2014-03-30
    • 2020-11-02
    • 2016-12-29
    • 2013-04-26
    • 2013-07-19
    相关资源
    最近更新 更多