Python 中元组列表的分组

问题描述 投票:0回答:1

这是您的 Stack Overflow 问题的改进版本:


我有一个程序,它接受输入并以列表的形式显示它。但是,我想单独获取输入并单独执行分组操作,因为我需要两个变量:节点数和边数。我需要这两个变量用于

__init__
类的
Graph
函数。

这是

Graph
课程:

class Graph:

    def __init__(self, num_nodes, edges):
        self.data = [[] for _ in range(num_nodes)]
        for v1, v2 in edges:
            self.data[v1].append(v2)
            self.data[v2].append(v1)

    def __repr__(self):
        return "\n".join(["{} : {}".format(i, neighbors) for (i, neighbors) in enumerate(self.data)])

    def __str__(self):
        return repr(self)

# Example usage:
# g1 = Graph(num_nodes, edges)
# print(g1)

在下面的代码中,问题在于它在单个变量中执行这两个操作

t
。我想将这些操作分开:

t = list(tuple(map(int, input().split())) for _ in range(int(input('enter number of rows: '))))
print(t)

我需要输出如下所示:

enter number of nodes: 3
enter edges:
1 2
3 4
5 6

list of edges:
[(1, 2), (3, 4), (5, 6)]

如何修改代码以将节点和边的数量作为单独的输入并将它们存储在单独的变量中?这是我到目前为止所尝试过的:

num_nodes = int(input('enter number of nodes: '))
edges = []
num_edges = int(input('enter number of edges: '))

print('enter edges:')
for _ in range(num_edges):
    edge = tuple(map(int, input().split()))
    edges.append(edge)

print('list of edges:')
print(edges)

当我使用这个输入法时,如何正确初始化并使用带有这些变量的

Graph
类?欢迎任何建议或改进!

python list tuples
1个回答
1
投票

如果我正确地理解了你的问题,并且你想要的只是返回“输入节点数:”输入值,那么只需像这样调用

len(t)
即可:

t = list(tuple(map(int, input("enter edges: ").split())) for r in range(int(input("enter no of nodes: "))))  

print("list of edges: ", end="")
print(t)
print("num_nodes: ", end="")
print(len(t))

使用您的示例值打印:

enter no of nodes: 3
enter edges: 1 2
enter edges: 3 4
enter edges: 5 6
list of edges: [(1, 2), (3, 4), (5, 6)]
num_nodes: 3
© www.soinside.com 2019 - 2024. All rights reserved.