Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 寻找集合和奖励点之间的交集_Python_Set_Intersection - Fatal编程技术网

Python 寻找集合和奖励点之间的交集

Python 寻找集合和奖励点之间的交集,python,set,intersection,Python,Set,Intersection,首先,我道歉,我是一个极端的初学者,所以我可能听起来很无知 我有5个单词集。其中4个是通过csv导入的,另一个是通过用户输入创建的。我想找到输入集和其他每个集之间的交集。然后根据有多少个十字路口来奖励分数 例如,我想找到“set_1”和“input_set”之间的交点。对于每个交叉点,用户分数加1。然后,找到“集合2”和“输入集合”之间的交集,并为每个交集向用户集合分数添加2。以此类推,每个交叉口最多增加4个 我会使用if循环还是for循环 像这样的 user_score = 0 for x

首先,我道歉,我是一个极端的初学者,所以我可能听起来很无知

我有5个单词集。其中4个是通过csv导入的,另一个是通过用户输入创建的。我想找到输入集和其他每个集之间的交集。然后根据有多少个十字路口来奖励分数

例如,我想找到“set_1”和“input_set”之间的交点。对于每个交叉点,用户分数加1。然后,找到“集合2”和“输入集合”之间的交集,并为每个交集向用户集合分数添加2。以此类推,每个交叉口最多增加4个

我会使用if循环还是for循环

像这样的

user_score = 0

for x in intersect(input_set, set_1):
    user_score += 1
for x in intersect(input_set, set_2):
    user_score += 2
for x in intersect(input_set, set_3):
    user_score += 3
for x in intersect(input_set, set_4):
    user_score += 4
if intersect(input_set, set_1):
    user_score += 1
elif intersect(input_set, set_2):
    user_score += 2
elif intersect(input_set, set_3):
    user_score += 3
elif intersect(input_set, set_4):
    user_score += 4
还是像这样

user_score = 0

for x in intersect(input_set, set_1):
    user_score += 1
for x in intersect(input_set, set_2):
    user_score += 2
for x in intersect(input_set, set_3):
    user_score += 3
for x in intersect(input_set, set_4):
    user_score += 4
if intersect(input_set, set_1):
    user_score += 1
elif intersect(input_set, set_2):
    user_score += 2
elif intersect(input_set, set_3):
    user_score += 3
elif intersect(input_set, set_4):
    user_score += 4
还是我走远了?感谢您的帮助。谢谢

这是:

for intersect(input_set, set_1):
…这不是for循环的工作方式。您需要一个循环变量,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)

如果你不在乎“东西”是什么,你可以称之为
\uu
。这没有任何特殊意义,但通常意味着它是一个无用的虚拟变量:

for _ in intersect(input_set, set_1):
    user_score += 1

同时,如果您正在使用内置的
集合
类型,则没有名为
相交
的函数,但有一个名为
相交
的方法,您可以这样使用:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
您还可以将其拼写为
&
运算符


但是,如果你仔细想想,有一种更快的方法可以做到这一点:不要循环,只需获取交叉口的
len
。因此:

user_score += len(input_set & set_1)
user_score += len(input_set & set_2) * 2
# etc.

最后一个改进:与其为四个集合设置四个独立的变量,为什么不只设置一个集合列表?您是否也有四个复制粘贴的代码块来创建单独的变量?如果是这样的话,就把它们扔掉。然后你可以这样做:

user_score = 0
for multiplier, user_set in enumerate(user_sets, 1):
    user_score += len(input_set & user_set) * multiplier
即使有单独的变量,也可以随时创建
user\u set
,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
但首先最好是有一个集合列表,而不是四个独立的变量。有关这方面的更多讨论,请参见和。

此:

for intersect(input_set, set_1):
…这不是for循环的工作方式。您需要一个循环变量,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)

如果你不在乎“东西”是什么,你可以称之为
\uu
。这没有任何特殊意义,但通常意味着它是一个无用的虚拟变量:

for _ in intersect(input_set, set_1):
    user_score += 1

同时,如果您正在使用内置的
集合
类型,则没有名为
相交
的函数,但有一个名为
相交
的方法,您可以这样使用:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
您还可以将其拼写为
&
运算符


但是,如果你仔细想想,有一种更快的方法可以做到这一点:不要循环,只需获取交叉口的
len
。因此:

user_score += len(input_set & set_1)
user_score += len(input_set & set_2) * 2
# etc.

最后一个改进:与其为四个集合设置四个独立的变量,为什么不只设置一个集合列表?您是否也有四个复制粘贴的代码块来创建单独的变量?如果是这样的话,就把它们扔掉。然后你可以这样做:

user_score = 0
for multiplier, user_set in enumerate(user_sets, 1):
    user_score += len(input_set & user_set) * multiplier
即使有单独的变量,也可以随时创建
user\u set
,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
但首先最好是有一个集合列表,而不是四个独立的变量。有关这方面的更多讨论,请参见和。

此:

for intersect(input_set, set_1):
…这不是for循环的工作方式。您需要一个循环变量,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)

如果你不在乎“东西”是什么,你可以称之为
\uu
。这没有任何特殊意义,但通常意味着它是一个无用的虚拟变量:

for _ in intersect(input_set, set_1):
    user_score += 1

同时,如果您正在使用内置的
集合
类型,则没有名为
相交
的函数,但有一个名为
相交
的方法,您可以这样使用:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
您还可以将其拼写为
&
运算符


但是,如果你仔细想想,有一种更快的方法可以做到这一点:不要循环,只需获取交叉口的
len
。因此:

user_score += len(input_set & set_1)
user_score += len(input_set & set_2) * 2
# etc.

最后一个改进:与其为四个集合设置四个独立的变量,为什么不只设置一个集合列表?您是否也有四个复制粘贴的代码块来创建单独的变量?如果是这样的话,就把它们扔掉。然后你可以这样做:

user_score = 0
for multiplier, user_set in enumerate(user_sets, 1):
    user_score += len(input_set & user_set) * multiplier
即使有单独的变量,也可以随时创建
user\u set
,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
但首先最好是有一个集合列表,而不是四个独立的变量。有关这方面的更多讨论,请参见和。

此:

for intersect(input_set, set_1):
…这不是for循环的工作方式。您需要一个循环变量,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)

如果你不在乎“东西”是什么,你可以称之为
\uu
。这没有任何特殊意义,但通常意味着它是一个无用的虚拟变量:

for _ in intersect(input_set, set_1):
    user_score += 1

同时,如果您正在使用内置的
集合
类型,则没有名为
相交
的函数,但有一个名为
相交
的方法,您可以这样使用:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)
您还可以将其拼写为
&
运算符


但是,如果你仔细想想,有一种更快的方法可以做到这一点:不要循环,只需获取交叉口的
len
。因此:

user_score += len(input_set & set_1)
user_score += len(input_set & set_2) * 2
# etc.

最后一个改进:与其为四个集合设置四个独立的变量,为什么不只设置一个集合列表?您是否也有四个复制粘贴的代码块来创建单独的变量?如果是这样的话,就把它们扔掉。然后你可以这样做:

user_score = 0
for multiplier, user_set in enumerate(user_sets, 1):
    user_score += len(input_set & user_set) * multiplier
即使有单独的变量,也可以随时创建
user\u set
,如下所示:

for thing_in_both_sets in intersect(input_set, set_1):
    user_score += 1
for _ in input_set.intersection(set_1):
user_sets = (set_1, set_2, set_3, set_4)

但首先最好是有一个集合列表,而不是四个独立的变量。有关这方面的更多讨论,请参见和。

@user2825385:是的,但您不需要这些额外的家长