相关疑难解决方法(0)

如何找到列表交集?

a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
Run Code Online (Sandbox Code Playgroud)

实际产出:[1,3,5,6] 预期产量:[1,3,5]

我们如何在两个列表上实现布尔AND操作(列表交集)?

python arrays intersection

155
推荐指数
9
解决办法
16万
查看次数

Python - 多个列表的交叉?

我正在玩python并且能够得到两个列表的交集:

result = set(a).intersection(b)
Run Code Online (Sandbox Code Playgroud)

现在,如果d是包含ab第三个元素的列表c,是否有内置函数用于查找内部所有三个列表的交集d?所以,例如,

d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]
Run Code Online (Sandbox Code Playgroud)

那么结果应该是

[3,4]
Run Code Online (Sandbox Code Playgroud)

python intersection list set

51
推荐指数
4
解决办法
4万
查看次数

查找列表中的任何元素是否在另一个列表中并返回找到的第一个元素

使用以下命令很容易检查列表的元素是否在另一个列表中any()

any(elem in list2 for elem in list1)
Run Code Online (Sandbox Code Playgroud)

但无论如何,有没有惯用的方式来返回找到的第一个元素?

我更喜欢单行解决方案,而不是:

for elem in list1:
   if elem in list2:
       return elem
Run Code Online (Sandbox Code Playgroud)

python python-2.7

7
推荐指数
2
解决办法
3253
查看次数

两个列表的交集,包括重复?

>>> a = [1,1,1,2,3,4,4]
>>> b = [1,1,2,3,3,3,4]

[1,1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

请注意这不是同一个问题: 两个列表的Python交集保持重复 因为即使列表a中有三个1,列表b中只有两个,因此结果应该只有两个.

python python-2.7

6
推荐指数
3
解决办法
4396
查看次数

Python - 如何在for循环中使用return语句?

首先,我想为糟糕的头衔道歉,但这是我能做的最好的.我试图拍摄很多截图,希望能让它更容易理解.

所以我正在研究一个不和谐的聊天机器人,现在正在开发一个可以作为待办事项清单的功能.我有一个命令将任务添加到列表中,它们存储在dict中.但是我的问题是以更易读的格式返回列表(见图片).

def show_todo():
    for key, value in cal.items():
        print(value[0], key)
Run Code Online (Sandbox Code Playgroud)

任务存储在dict被调用的中cal.但是为了让机器人实际发送消息,我需要使用return语句,否则它只是将它打印到控制台而不是实际的聊天(见图片).

def show_todo():
    for key, value in cal.items():
        return(value[0], key)
Run Code Online (Sandbox Code Playgroud)

以下是我尝试修复它的方法,但由于我使用了返回,for循环无法正常工作.

那么我该如何解决这个问题呢?如何使用return语句将其打印到聊天而不是控制台?

请参阅图片以便更好地理解

python return function python-3.x

6
推荐指数
2
解决办法
3万
查看次数

单元测试-断言列表中的一组项目包含(或不包含)在另一个列表中

您好,我是编程和尝试进行测试的新手,它检查项目列表中的任何项目是否存在于另一个列表中(在Python 2.7中使用unittest)。

例如,如果我有一个列表[[dog],“ cat”,“ frog],而我要测试的方法的结果是[” tiger“,” lion“,” kangaroo“,” frog],我希望测试失败,因为它包含上一个列表中的一项(“青蛙”)。我还希望测试告诉我两个列表都有哪些单词(即,哪些单词导致测试失败)。

我试过了:

self.assertIn(["cat", "dog"], method("cat dog tiger"))
Run Code Online (Sandbox Code Playgroud)

该方法的结果为[“ cat”,“ dog”,“ tiger”],但测试结果为失败,并显示:

AssertionError: ['cat', 'dog'] not found in ['cat', 'dog', 'tiger']
Run Code Online (Sandbox Code Playgroud)

我希望此测试返回“确定”,因为第二个列表中存在“猫”和“狗”。这似乎assertIn没有做什么,我还以为它会做(我认为这是检查是否有任何一个存在于b)。

反之亦然,当我希望它失败时会通过assertNotIn传递。

我已经搜索了一段时间,但是因为我不确定要查找的内容而很难找到。

谢谢您的阅读,我希望这是有道理的。

编辑:我已经放弃了克里斯的解决方案,它可以按我的意愿工作:

def myComp(list1, list2):
    section = list(set(list1).intersection(list2))
Run Code Online (Sandbox Code Playgroud)

为了获取错误消息中重叠(即触发失败)的单词列表,我从此处添加了以下代码。如何在Python AssertionError中更改消息?

try:
    assert(len(section)==0)
except AssertionError as e:
    e.args += ('The following are present in the processed text', 
    section)
    raise
Run Code Online (Sandbox Code Playgroud)

结果正是我想要的:

AssertionError: ('The following are pressent in the processed text', ['dog', 
'cat'])
Run Code Online (Sandbox Code Playgroud)

python unit-testing assert list python-2.7

6
推荐指数
3
解决办法
1万
查看次数

在Python中,如何在保持单词顺序的同时从两个列表中查找常用单词?

我正在尝试找到一种简单的方法来做到这一点:

list1 = ['little','blue','widget']
list2 = ['there','is','a','little','blue','cup','on','the','table']
Run Code Online (Sandbox Code Playgroud)

我想获得两个列表的公共元素,而list1的顺序保持不变,因此可以预期此结果。

list3 = ['little','blue']
Run Code Online (Sandbox Code Playgroud)

我在用

list3 = list(set(list1)&set(list2))
Run Code Online (Sandbox Code Playgroud)

但是,这仅返回list3 = ['blue','little'],显然,set()只是忽略了顺序。

任何帮助将不胜感激!

python list

5
推荐指数
2
解决办法
6933
查看次数

如何根据另一个列表保留列表的元素

我有两个列表看起来像:

list1 = ['a','a','b','b','b','c','d','e','e','g','g']

list2 = ['a','c','z','y']
Run Code Online (Sandbox Code Playgroud)

我想要做的是保持list1的所有元素也在list2中.结果应该是:

outcome= ['a','a','c']
Run Code Online (Sandbox Code Playgroud)

python list filter

4
推荐指数
2
解决办法
3520
查看次数

如何使用Python根据两个元素之一的列表元素出现来连接两个列表

我有以下清单

list1 = [[x1,1,b1],[x2,1,b1],[x3,1,b1],[x4,1,b1]]
Run Code Online (Sandbox Code Playgroud)

和以下

list2 = [[x1,0,b1],[x5,0,b1],[x2,0,b1],[x7,0,b1]]
Run Code Online (Sandbox Code Playgroud)

我不知道如何创建最终列表,例如

list3 = [[x1,1,b1],[x2,1,b1],[x3,1,b1],[x4,1,b1],[x5,0,b1],[x7,0,b1]]
Run Code Online (Sandbox Code Playgroud)

仅当list1中不存在list2 [0] [0]元素时,才保留第一个list1并从list2添加到list1元素

我尝试了以下几种组合方式

for i in list1:
    for i2 in list2:
        if i[0][0] != i2[0][0]
            list3.append(i2)
Run Code Online (Sandbox Code Playgroud)

但是list3显示常见的元素

python list python-3.x

3
推荐指数
1
解决办法
56
查看次数

我如何获得两个相同的python列表的元素?

可能重复:
2个列表之间的公共元素比较

我有两个列表:

[Apples, Bananas, Pears]
[Kiwis, Bananas, Apples]
Run Code Online (Sandbox Code Playgroud)

我想只获得两个列表共享的元素.在python中必须有一些内置函数.

结果:

[Apples, Bananas]
Run Code Online (Sandbox Code Playgroud)

python list

2
推荐指数
2
解决办法
340
查看次数