如何仅从 zip 中解压部分参数,而不是全部?

发布于 2024-12-29 16:51:16 字数 609 浏览 1 评论 0原文

我的 SQL 查询:

select id,value,zvalue from axis

给我这样的结果:

ans=(1,23,34)(12,34,35)(31,67,45)(231,3412,234)

现在如果我想要所有这 3 个变量作为 3 个不同的列表

id, value, zvalue = zip(*ans)

但是如果我只想要 idvalue 作为单独的列表。它会给我太多的值来解包错误

id, value = zip(*ans)

有什么方法可以从 SQL 查询创建任意数量的列表。因为如果查询中有10个参数,我在使用ZIP时必须使用所有参数?

My SQL query:

select id,value,zvalue from axis

gives me result like this:

ans=(1,23,34)(12,34,35)(31,67,45)(231,3412,234)

now if I want all these 3 variables as 3 different lists

id, value, zvalue = zip(*ans)

But if I only want id and value as separate lists. It will give me too many values to unpack error.

id, value = zip(*ans)

Is there any way where I can create any number of lists from SQL query. Because if there are 10 parameters in the query, I have to use all the parameters while using ZIP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

初熏 2025-01-05 16:51:16

参数的数量必须匹配,这是Python 2中的规则。对于Python 3,您可以使用*来捕获到列表中。

常见的 pythonic (2.x) 解决方法是使用 _ 来表示您不会使用的变量,即:

id,value,_ = zip(*ans) # only works for exactly three values

正如 DSM 所评论的,对于 Python 3,您可以使用 * 来获取“剩余”参数:一个列表:

id, value, *_ = zip(*ans) # _ will be a list of zero or more args

或者,最简单的,只需对 zip 的返回进行切片:

id,value = zip(*ans)[:2] # ignore all but first two values  

The number of arguments must match, this is a rule in Python 2. For Python 3, you can use * to capture into a list.

The common pythonic (2.x) workaround is to use _ to denote variables you won't use, i.e.:

id,value,_ = zip(*ans) # only works for exactly three values

As DSM commented, for Python 3, you can use * to grab "remaining" args as a list:

id, value, *_ = zip(*ans) # _ will be a list of zero or more args

Or, simplest, just slice the return from zip:

id,value = zip(*ans)[:2] # ignore all but first two values  
如果没结果 2025-01-05 16:51:16

如果您使用的是 Python 3,您可以使用它来解压 n 个附加元素:

In [0]: a, b, *_ = (1, 2, 3, 4)

In [1]: a
1

If you are using Python 3 you can use this for unpacking n additional elements:

In [0]: a, b, *_ = (1, 2, 3, 4)

In [1]: a
1
时光与爱终年不遇 2025-01-05 16:51:16

我想您可能正在寻找这样的东西:

ids = [t[0] for t in ans]
values = [t[1] for t in ans]

第一个列表理解获取 ans 中所有元组的第一列,即 id 列。第二个列表理解获取 ans 中所有元组的第二列,即 value 列。

I think you might be looking for something like this:

ids = [t[0] for t in ans]
values = [t[1] for t in ans]

The first list comprehension gets the first column in all tuples in ans, that is, the id column. The second list comprehension gets the second column for all tuples in ans, that is, the value column.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文