首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习使用python 3中的map和lambda

学习使用python 3中的map和lambda
EN

Stack Overflow用户
提问于 2021-12-20 22:14:00
回答 2查看 61关注 0票数 0

此脚本的目的是学习如何结合使用lambda函数和map

我尝试在sqlite的所有列中插入一个字符串,但是没有显示错误,但是值没有变化。

代码语言:javascript
复制
class DB(SomeDbBase):

    def get_columns(self):
        res = self.get_cursor().execute("SELECT * FROM EVENTS")
        names = list(map(lambda x: x[0], res.description))
        return names`


    def update_to_last(self,column:str,data:str):
        c = self.get_cursor()
        print(column,data)
        c.execute(
                 f"UPDATE EVENTS SET 
                 '{column}'='{data}' WHERE ID ='(SELECT last_insert_rowid())'")
        self.conn.commit()

    if __name__ == "__main__":
        d=DB()
        columns=d.get_columns()

        # this pile of map and lambda's ment to first get all of the columns names
        # then add to every string a pair of some fictionary "data" to a list
        # then the list is sent to update
        map(
           lambda x:d.update_to_last(x[0],x[1]),
           (list(map(lambda column:[column,"data"],columns)))
           )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-20 22:25:32

map不创建结果列表。当您在map实例上迭代时,它会根据需要生成项。您没有对map实例进行迭代,所以任何东西都不会调用update_to_last

不要使用map作为副作用。使用常规的for循环。

代码语言:javascript
复制
# No need to turn the map instance into a list first; you
# can iterate over the map directly.
for x in map(lambda column: [column, "data"], columns):
    d.update_to_last(x[0], x[1])

当然,由于"data"x[1]的固定值,所以您实际上根本不需要map

代码语言:javascript
复制
for column in columns;
    d.update_to_last(column, "data")

另一方面,如果d.update_to_last生成了一个想要存储在列表中的有趣的返回值,您可能会做一些类似的操作

代码语言:javascript
复制
from itertools import repeat
x = list(map(d.list_to_update, columns, repeat("data")))

虽然清单理解像

代码语言:javascript
复制
x = [d.list_to_update(c, "data") for c in columns]

会更好。

票数 3
EN

Stack Overflow用户

发布于 2021-12-20 22:19:44

你是说像这样的事吗?(相应地更改列名id )

c.execute(f"UPDATE EVENTS SET '{column}'='{data}' WHERE id = (SELECT last_insert_rowid())")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70428600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档