我正在寻找一种简单(快速)的方法来确定两个无序列表是否包含相同的元素:
例如:
['one', 'two', 'three'] == ['one', 'two', 'three'] : true
['one', 'two', 'three'] == ['one', 'three', 'two'] : true
['one', 'two', 'three'] == ['one', 'two', 'three', 'three'] : false
['one', 'two', 'three'] == ['one', 'two', 'three', 'four'] : false
['one', 'two', 'three'] == ['one', 'two', 'four'] : false
['one', 'two', 'three'] == ['one'] : false
Run Code Online (Sandbox Code Playgroud)
我希望不使用地图就能做到这一点.
在编写测试用例时,我经常需要声明两个列表包含相同的元素而不考虑它们的顺序.
我一直在将列表转换为集合.
有没有更简单的方法来做到这一点?
编辑:
正如@MarkDickinson指出的那样,我可以使用TestCase.assertItemsEqual.
TestCase.assertItemsEqualPython2.7中的新增注释.如果您使用的是旧版本的Python,则可以使用unittest2 - Python 2.7新功能的后端.
对不起这个简单的问题,但我很难找到答案.
当我比较2个列表时,我想知道它们是否"相等",因为它们具有相同的内容,但顺序不同.
例如:
x = ['a', 'b']
y = ['b', 'a']
Run Code Online (Sandbox Code Playgroud)
我想x == y评价一下True.
我试图编写代码来解决标准的整数分区问题(维基百科).我写的代码很乱.我需要一个优雅的解决方案来解决问题,因为我想改进我的编码风格.这不是一个家庭作业问题.
阅读这个问题,我想知道用Python来评估表达式需要多少时间(渐近地说)
{1,2}=={2,1}
Run Code Online (Sandbox Code Playgroud)
也就是说,检查set类的两个实例是否相等.
我在python中编写代码来查找整数的因子对.但是制作对也会产生反向对.我想在不导入任何模块的情况下使用简单的方法消除这些反向对.例如.
[[1, 200], [2, 100], [4, 50], [5, 40], [8, 25], [10, 20], [20, 10], [25, 8], [40, 5], [50, 4], [100, 2], [200, 1]]
输出应该是:
[[1, 200], [2, 100], [4, 50], [5, 40], [8, 25], [10, 20]]
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
N = []
J = []
F = []
Z = []
S = []
num = input("Enter no. of elements in list")
print ('Enter numbers')
prod = 1
for i in range(int(num)):
n = input("num :")
N.append(int(n))
for x in …Run Code Online (Sandbox Code Playgroud) 我需要比较两个列表而不考虑它们的顺序:
list_a = ['one', 'two', 'three']
list_b = ['three', 'one', 'two']
Run Code Online (Sandbox Code Playgroud)
当我尝试比较它们时,它返回False:
>>> list_a == list_b
False
Run Code Online (Sandbox Code Playgroud)
两个列表都有很多元素,比较它们的最佳方法是什么?
我正在尝试制作一个程序来检查两个数字是否具有相同的数字但顺序不同。例如,232 和 223 将打印“true”,但 123 和 223 将打印“false”。现在我没有错误,但答案应该是“正确的”,而不是:
我的代码:
a=322
b=223
list_a = list(str(a))
list_b = list(str(b))
c=len(str(a))
d=len(str(b))
j=0
if c != d:
print "false"
else:
for i in range(len(list_a)):
while j<d:
if i == list_b[j]:
list_b.remove(list_b[j])
break
j=j+1
j=0
if list_b==[]:
print "true"
Run Code Online (Sandbox Code Playgroud) 有没有办法检查两个列表是否相等,具体取决于其中的值,但无论它们的顺序如何。
例如:
[3,4,5] == [5,3,4]将:true
您当然可以对两个列表进行排序然后比较它们,问题是是否可以使用它们的值检查列表是否相等,而不对它们进行排序
如何检查第一个列表的元素是否也出现在第二个列表中,但前提是该值在两个列表中出现的次数相同?
我将展示我的代码和输出来演示我想要的结果。
输入:
List_1 = [1, 2, 2]
List_2 = [1, 2, 2, 3, 4]
print("First list is", List_1)
print("Second list is", List_2)
res = all(ele in List_2 for ele in List_1)
print(f"Output: {res}")
Run Code Online (Sandbox Code Playgroud)
输出:
List_1 = [1, 2, 2]
List_2 = [1, 2, 2, 3, 4]
print("First list is", List_1)
print("Second list is", List_2)
res = all(ele in List_2 for ele in List_1)
print(f"Output: {res}")
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,如果第二个列表的某个元素具有另一个相同的值,则第一个列表也需要具有它。
但是,如果两个列表中出现的值出现次数不同,我希望它为 false。
这是一个例子。
输入:
List_1 = [1, 2]
List_2 = [1, 2, 2, …Run Code Online (Sandbox Code Playgroud) python ×10
list ×3
algorithm ×1
comparison ×1
equality ×1
python-2.x ×1
python-3.x ×1
unit-testing ×1