Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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 - Fatal编程技术网

Python返回唯一的元素组合

Python返回唯一的元素组合,python,Python,如果我有这样一个列表: ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']] 比如说,这份名单分为“饮料”、“零食”和“沙漠”三类。我想返回“饮料”和“零食”的所有独特元素组合。列表应返回以下内容: ls = [['water', 'chips'], ['soda', 'nuts']] 它不会返回第三个列表,因为water和chips已经存在于ls中的另一个列表中 您似乎希

如果我有这样一个列表:

ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]
比如说,这份名单分为“饮料”、“零食”和“沙漠”三类。我想返回“饮料”和“零食”的所有独特元素组合。列表应返回以下内容:

ls = [['water', 'chips'], ['soda', 'nuts']]

它不会返回第三个列表,因为
water
chips
已经存在于
ls
中的另一个列表中

您似乎希望每个列表都有唯一的值。您已经完成了一半,因为在
unqBuilding
中有一组所有唯一的值

unique_per_row = [list(set(r).difference(unqBuilding))
                  for r in row]
上面将生成一个列表,其中每行中的项目列表仅显示在该行中

一个集合的
difference
方法获取另一个集合,并返回一个新集合,其中的项目仅出现在第一个集合中。用维恩图更容易理解。在下图中,
right.difference(left)
的等效项以红色突出显示


您似乎希望每个列表具有唯一的值。您已经完成了一半,因为在
unqBuilding
中有一组所有唯一的值

unique_per_row = [list(set(r).difference(unqBuilding))
                  for r in row]
上面将生成一个列表,其中每行中的项目列表仅显示在该行中

一个集合的
difference
方法获取另一个集合,并返回一个新集合,其中的项目仅出现在第一个集合中。用维恩图更容易理解。在下图中,
right.difference(left)
的等效项以红色突出显示


您似乎希望每个列表具有唯一的值。您已经完成了一半,因为在
unqBuilding
中有一组所有唯一的值

unique_per_row = [list(set(r).difference(unqBuilding))
                  for r in row]
上面将生成一个列表,其中每行中的项目列表仅显示在该行中

一个集合的
difference
方法获取另一个集合,并返回一个新集合,其中的项目仅出现在第一个集合中。用维恩图更容易理解。在下图中,
right.difference(left)
的等效项以红色突出显示


您似乎希望每个列表具有唯一的值。您已经完成了一半,因为在
unqBuilding
中有一组所有唯一的值

unique_per_row = [list(set(r).difference(unqBuilding))
                  for r in row]
上面将生成一个列表,其中每行中的项目列表仅显示在该行中

一个集合的
difference
方法获取另一个集合,并返回一个新集合,其中的项目仅出现在第一个集合中。用维恩图更容易理解。在下图中,
right.difference(left)
的等效项以红色突出显示


pos0和pos1必须是函数的变量,以及列表本身,但您知道这一点

pos0 = 0
pos1 = 2

ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

s = set()
for row in ls:
    #cant hash a list, tuple it

    tu = (row[pos0], row[pos1])

    s.add(tu)
#untuple the set's contents back to lists
print [list(tu) for tu in s]
输出:位置0,1

[['soda', 'nuts'], ['water', 'chips']]
位置0,2

[['soda', 'cake'], ['water', 'cake'], ['water', 'pie']]

pos0和pos1必须是函数的变量,以及列表本身,但您知道这一点

pos0 = 0
pos1 = 2

ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

s = set()
for row in ls:
    #cant hash a list, tuple it

    tu = (row[pos0], row[pos1])

    s.add(tu)
#untuple the set's contents back to lists
print [list(tu) for tu in s]
输出:位置0,1

[['soda', 'nuts'], ['water', 'chips']]
位置0,2

[['soda', 'cake'], ['water', 'cake'], ['water', 'pie']]

pos0和pos1必须是函数的变量,以及列表本身,但您知道这一点

pos0 = 0
pos1 = 2

ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

s = set()
for row in ls:
    #cant hash a list, tuple it

    tu = (row[pos0], row[pos1])

    s.add(tu)
#untuple the set's contents back to lists
print [list(tu) for tu in s]
输出:位置0,1

[['soda', 'nuts'], ['water', 'chips']]
位置0,2

[['soda', 'cake'], ['water', 'cake'], ['water', 'pie']]

pos0和pos1必须是函数的变量,以及列表本身,但您知道这一点

pos0 = 0
pos1 = 2

ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

s = set()
for row in ls:
    #cant hash a list, tuple it

    tu = (row[pos0], row[pos1])

    s.add(tu)
#untuple the set's contents back to lists
print [list(tu) for tu in s]
输出:位置0,1

[['soda', 'nuts'], ['water', 'chips']]
位置0,2

[['soda', 'cake'], ['water', 'cake'], ['water', 'pie']]

您可以执行以下操作:

>>> ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

>>> item_position = { "drink": 0,
        "snack": 1,
       "desert": 2}

>>> set((x[item_position['drink']], x[item_position['snack']]) for x in ls)
{('soda', 'nuts'), ('water', 'chips')}
在这里,我创建了一个
item\u position
dict,它给出了食物类型在内部列表中的位置。 然后,我在这里创建一个必需项的元组,即
饮料
零食
,并应用
set
操作符过滤重复项


这样做的好处是,您可以只传入项类型名称,而不必担心其索引。您还可以在准备元组时更改要使用的内部列表的项数。

您可以执行以下操作:

>>> ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

>>> item_position = { "drink": 0,
        "snack": 1,
       "desert": 2}

>>> set((x[item_position['drink']], x[item_position['snack']]) for x in ls)
{('soda', 'nuts'), ('water', 'chips')}
在这里,我创建了一个
item\u position
dict,它给出了食物类型在内部列表中的位置。 然后,我在这里创建一个必需项的元组,即
饮料
零食
,并应用
set
操作符过滤重复项


这样做的好处是,您可以只传入项类型名称,而不必担心其索引。您还可以在准备元组时更改要使用的内部列表的项数。

您可以执行以下操作:

>>> ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

>>> item_position = { "drink": 0,
        "snack": 1,
       "desert": 2}

>>> set((x[item_position['drink']], x[item_position['snack']]) for x in ls)
{('soda', 'nuts'), ('water', 'chips')}
在这里,我创建了一个
item\u position
dict,它给出了食物类型在内部列表中的位置。 然后,我在这里创建一个必需项的元组,即
饮料
零食
,并应用
set
操作符过滤重复项


这样做的好处是,您可以只传入项类型名称,而不必担心其索引。您还可以在准备元组时更改要使用的内部列表的项数。

您可以执行以下操作:

>>> ls = [['water', 'chips', 'pie'], ['soda', 'nuts', 'cake'], ['water', 'chips', 'cake']]

>>> item_position = { "drink": 0,
        "snack": 1,
       "desert": 2}

>>> set((x[item_position['drink']], x[item_position['snack']]) for x in ls)
{('soda', 'nuts'), ('water', 'chips')}
在这里,我创建了一个
item\u position
dict,它给出了食物类型在内部列表中的位置。 然后,我在这里创建一个必需项的元组,即
饮料
零食
,并应用
set
操作符过滤重复项



这样做的好处是,您可以只传入项类型名称,而不必担心其索引。此外,您还可以在准备元组时更改要使用的内部列表中的项数。

添加一些输入、预期输出以及数据和行是什么提供一个数据示例您的意思是通过每行中的值进行循环?是否使用嵌套循环?请参见上面的编辑。希望澄清。逻辑是什么?您如何解释导致我们获得您提供的结果的过程?添加一些输入、预期输出以及哪些数据和行提供您的数据样本您指的是通过每行中的值的循环?是否使用嵌套循环?请参见上面的编辑。希望澄清。逻辑是什么?您如何解释导致我们获得您提供的结果的过程?添加一些输入、预期输出以及提供示例的数据和行