如何在python中比较两个列表?

时间:2010-09-16 11:49:16

标签: python list

如何在python中比较两个列表?

date = "Thu Sep 16 13:14:15 CDT 2010" 
sdate = "Thu Sep 16 14:14:15 CDT 2010" 
dateArr = [] dateArr = date.split() 
sdateArr = [] sdateArr = sdate.split() 

现在我要比较这两个列表。我猜split会返回一个列表。我们可以在Java中进行简单的比较,如dateArr[i] == sdateArr[i],但我们怎样才能在Python中做到这一点?

6 个答案:

答案 0 :(得分:63)

你可以随时做:

a=[1,2,3]
b=['a','b']
c=[1,2,3,4]
d=[1,2,3]

a==b    #returns False
a==c    #returns False
a==d    #returns True

答案 1 :(得分:9)

a = ['a1','b2','c3']
b = ['a1','b2','c3']
c = ['b2','a1','c3']

# if you care about order
a == b # True
a == c # False

# if you don't care about order
set(a) == set(b) # True
set(a) == set(c) # True

通过投放abc作为一组,您可以删除重复项,并且订单不会计数。比较集合也比比较列表更快,更有效。

答案 2 :(得分:4)

如果您的意思是列表,请尝试==

l1 = [1,2,3]
l2 = [1,2,3,4]

l1 == l2 # False

如果您的意思是array

l1 = array('l', [1, 2, 3])
l2 = array('d', [1.0, 2.0, 3.0])
l1 == l2 # True
l2 = array('d', [1.0, 2.0, 3.0, 4.0])
l1 == l2 # False

如果你想比较字符串(根据你的评论):

date_string  = u'Thu Sep 16 13:14:15 CDT 2010'
date_string2 = u'Thu Sep 16 14:14:15 CDT 2010'
date_string == date_string2 # False

答案 3 :(得分:2)

鉴于您在评论中提供的代码,我假设您要这样做:

>>> dateList = "Thu Sep 16 13:14:15 CDT 2010".split()
>>> sdateList = "Thu Sep 16 14:14:15 CDT 2010".split()
>>> dateList == sdataList
false

字符串的split - 方法返回一个列表。 Python中的列表与数组非常不同。在这种情况下,==对两个列表进行逐元素比较,并返回它们的所有元素是否相等以及元素的数量和顺序是否相同。阅读documentation

答案 4 :(得分:1)

try
    {
                            string url = GlobalVariables.ServiceUrl + "Buyer/Order/CreateBuyer?sellerUserName=" + System.Uri.EscapeDataString(GlobalVariables.SellerUsername);
                            HttpClient client = new HttpClient();
                            string jsonData = JsonConvert.SerializeObject(data);
                            StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
                            HttpResponseMessage response = await client.PostAsync(url, content);
                            string result = await response.Content.ReadAsStringAsync();
                            Response responseData = JsonConvert.DeserializeObject<Response>(result);
                            if (responseData.Status == 0)
                            {
                               // DependencyService.Get<IFClass>().ShortAlert("Buyer Sync Failed.");
                            }
                            else
                            {
                                DependencyService.Get<ISQLite>().CreatedDeleteBuyersFromLocal(data.Id);
                            }
                        }
                        catch (Exception ex)
                        {

                        }

答案 5 :(得分:0)

从您的帖子中我收集到您要比较日期,而不是数组。如果是这种情况,则使用适当的对象:datetime对象。

请查看datetime module的文档。日期是一个艰难的饼干。使用可靠的算法。