【问题标题】:Creating sets using loops使用循环创建集合
【发布时间】:2021-12-09 23:39:17
【问题描述】:

有人可以帮我理解下面代码中的以下语句吗?

cartesian_powers = [ i+(a,) for i in cartesian_powers for a in A]

具体i+(a,)的作用?

请尽可能解释答案。

代码:

A = {1, 2, 3}
k = 2

# Initialize every element as a tuple
cartesian_powers = [(a,) for a in A]

for j in range(k-1):
    cartesian_powers = [ i+(a,) for i in cartesian_powers for a in A]

print("Tuples  in {}^{}: {}".format(A,k,set(cartesian_powers)))
print("Size = {}".format(len(cartesian_powers)))

【问题讨论】:

  • 您究竟需要解释什么?你不明白(a,) 是什么意思吗(参见here 的解释)?或者您想知道为什么以这种方式使用它?无论如何,当您不理解代码时,我强烈 建议您在调试器中逐行浏览代码。 PyCharm 是免费的,并且有一个很棒的调试器,here 是关于它的一些信息。

标签: python python-3.x data-science


【解决方案1】:

注意cartesian_powers 使用相同的(a,) 语法进行初始化,表示元素是元组,每个元组包含一个整数。

[ i+(a,) for i in cartesian_powers for a in A] 中,i(a,) 都是元组,所以加法i+(a,) * 连接元组,返回一个二整数元组。

我认为表示元组连接的加法语法i+(a,) 引起了混乱。

【讨论】:

    猜你喜欢
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多