从2d数组中分离不存在于anoth中的唯一列表

2024-10-03 06:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

鉴于这一部分-

for e, m in enumerate(mfilist):
    if not any(m[0] and m[1] and m[2] and m[3] and m[4] in sublist for sublist in internaltbl):
        goodlist.append(m)
        copygood.append(copylist[e])

一些列表应该附加到goodlist,因为它们在internaltbl中不存在与上面过滤的组合元素重复的列表。你知道吗

例如,mfilist中有一个条目:

[u'{8E25CEF3-4098-4148-9122-E9978DCB077D}', u'{889280F1-8F0B-48E8-A8D2-FCA44BA3D492}', u'{1A290F5B-CB24-4E5B-8342-B6B256150D1F}', 2, 'C', '', datetime.datetime(2014, 7, 14, 0, 0), '', '', '', 'FALSE', 'A1', 'Map']

还有一个来自internaltbl:

[u'Historical', u'{03810429-88FD-4ACD-A8EE-1A6E21250B94}', u'{4FBB1469-1C0D-4DBE-9C98-CFECA12748C3}', u'{ED96E80A-A20F-4DEA-92A6-2DF783C7665F}', 2, u'C', u'PPR, u'ArcMap Document (*.mxd)', u'L', datetime.datetime(2014, 5, 1, 0, 0), u'LG', u'CHJ', u'TB', None, u'Proposed']

此后,我确保每个元素都具有字符串值,以避免出现“强制使用unicode”之类的问题,但问题仍然存在——没有附加任何内容。你知道吗

没有这些guid的组合,那么internaltbl中就存在“2,C”。你知道吗

有什么想法?你知道吗


Tags: andin元素列表fordatetimeifnot
1条回答
网友
1楼 · 发布于 2024-10-03 06:19:02

你遇到了运算符优先级的问题。在此位中:

m[0] and m[1] and m[2] and m[3] and m[4] in sublist

您要评估的是:

(m[0] in sublist) and (m[1] in sublist) and ...

但Python看到的是:

m[0] and m[1] and m[2] and m[3] and (m[4] in sublist)

因为非空字符串将type duck为True,所以只要m[4]在sublist中并且所有其他字符串都非空,结果就是True。你知道吗

如果不想分别编写每个成员资格测试,请使用以下快捷方式:

all(x in sublist for x in [m[1], m[2], m[3], m[4]])

相关问题 更多 >