0

我有一个城市列表,每个城市都有一个名称、一个真值或假值,然后是另一个与其相连的城市的列表。如果所有城市都是 True 并且 False 不是所有城市都是 True,我如何在 Python 中编写一个函数来表示 True?

以下是我的城市是如何建造的:

def set_up_cities(names=['City 0', 'City 1', 'City 2', 'City 3', 'City 4', 'City 5', 'City 6', 'City 7', 'City 8', 'City 9', 'City 10', 'City 11', 'City 12', 'City 13', 'City 14', 'City 15']):
    """
    Set up a collection of cities (world) for our simulator.
    Each city is a 3 element list, and our world will be a list of cities.

    :param names: A list with the names of the cities in the world.

    :return: a list of cities
    """

    # Make an adjacency matrix describing how all the cities are connected.
    con = make_connections(len(names))

    # Add each city to the list
    city_list = []
    for n in enumerate(names):
        city_list += [ make_city(n[1],con[n[0]]) ]

    return city_list
4

3 回答 3

5

我相信你只是想要all()

all(city.bool_value for city in city_list)

all可迭代

如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

2.5 版中的新功能。

于 2013-10-22T19:00:40.273 回答
2

使用内置all

all(city.isTrue for city in city_list)
于 2013-10-22T19:00:57.270 回答
0

我不确切知道哪个变量包含 3 项列表,但基本上:

alltrue = all(x[1] for x in all_my_cities)

列表推导只获取所有布尔值,all如果所有项目都为真,则为可迭代返回真。

编辑:更改为生成器形式。

于 2013-10-22T19:01:32.037 回答