Python:此列表索引的值是否等于任何其他索引的值?

时间:2016-03-07 22:37:37

标签: python list tuples

我有一个从空开始的元组列表,并附加了新的用户生成的元组。

if left_mouse == True:
    generic_list.append((mouse_position_x, mouse_position_y))

为了防止多个元组具有相同的(x,y)数据,我想遍历列表并检查最新的元组是否与列表中的任何其他元组相同,如果是,则替换旧的新元组。

for tuple in tuple_list:
    if tuple_list[-1].position == tuple_list[i].position:
         tuple_list.remove(i)

我知道我所得到的是错的,但我不知道为什么或如何前进。任何帮助都会非常感激。

编辑:我现在正在使用set(),它完美无缺。谢谢大家。

3 个答案:

答案 0 :(得分:0)

如果订单无关紧要,您可以使用一套。它只会在列表中保留唯一的元组。然后,如果需要,您可以从此集创建新列表。例如:

generic_list = [(1,2), (3,4), (1,2), (5,6)]
generic_list = set(generic_list)  # {(1, 2), (3, 4), (5, 6)}
generic_list = list(generic_list) # [(1, 2), (5, 6), (3, 4)]

答案 1 :(得分:0)

我建议使用一个集合(而不是列表):

<!DOCTYPE html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>

<body>

    <a href="#" id="get_location">Find Me</a>
    <div id="map">
        <iframe id="google_map" width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.co.uk?output=embed"></iframe>
    </div>

    <script>
        var c = function (pos) {
            var lat = pos.coords.latitude,
                long = pos.coords.longitude,
                coords = lat + ', ' + long;

            document.getElementById('google_map').setAttribute('src', 'https://maps.google.co.uk/?q=' + coords + '&z=60&output=embed');
        }

        document.getElementById('get_location').onclick = function () {
            navigator.geolocation.getCurrentPosition(c);
            return false;
        }
    </script>
</body>

</html>

答案 2 :(得分:0)

针对您的具体问题:您正在使用名为tuple_list的变量迭代tuple。这就是你应该用来比较的东西:

last_tuple = tuple_list[-1]
for tuple in tuple_list[:-1]:
    if tuple.position == last_tuple.position:
        tuple_list.remove(tuple)

除非你不应该这样做,因为你正在做各种额外的工作。相反,保持与您的元组列表并行的set,并使用该集来确定您之前是否已经看过该位置。 (这假设您的列表长达数百或数千个元素。如果您只跟踪三个或四个位置,您可以只搜索列表。)

generic_list = []
positions_seen = set(generic_list)

# blah blah blah code

if left_mouse:
    pos = (mouse_position_x, mouse_position_y)
    if pos not in positions_seen:
        positions_seen.add(pos)
        generic_list.append(pos)