删除类内容中的括号

2024-09-27 21:24:46 发布

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

TextFile contents 我试着通过从文本中读入单个字母来填充不同的节点,这确实有效,但不像我希望的那样。当我试图调用Node的属性函数来获取内容时,我得到的是一个['H'],而不仅仅是H,这使得无法在程序的不同部分进行比较。有没有办法去掉括号,只在每个节点的内容中输入一个字母

def createLattice():
    test = []
    with open("lattice.txt", 'r') as f:
        for line in f:
            items = line.split()
            test.append(items[0:])

    Node1 = Node(test[0])
    Node2 = Node(test[1])
    Node3 = Node(test[2])
    Node4 = Node(test[3])
    Node5 = Node(test[4])
    Node6 = Node(test[5])
    Node7 = Node(test[6])
    Node8 = Node(test[7])
    Node9 = Node(test[8])
    Node10 = Node(test[9])
    Node11 = Node(test[10])
    Node12 = Node(test[11])
    Node13 = Node(test[12])
    Node14 = Node(test[13])
    Node15 = Node(test[14])
    Node16 = Node(test[15])
    Node17 = Node(test[16])
    Node18 = Node(test[17])

    lattice = {Node1: [Node2, Node6, Node7],
               Node2: [Node1, Node3, Node5, Node8],
               Node3: [Node2, Node4, Node9],
               Node4: [Node3, Node5, Node10],
               Node5: [Node2, Node4, Node6, Node11],
               Node6: [Node5, Node1, Node12],
               Node7: [Node1, Node8, Node12, Node13],
               Node8: [Node2, Node7, Node9, Node12, Node14],
               Node9: [Node3, Node8, Node10, Node15],
               Node10: [Node4, Node9, Node11, Node16],
               Node11: [Node5, Node8, Node10, Node12, Node17],
               Node12: [Node6, Node7, Node11, Node18],
               Node13: [Node7, Node14, Node18],
               Node14: [Node8, Node13, Node15, Node17],
               Node15: [Node9, Node14, Node16],
               Node16: [Node10, Node15, Node17],
               Node17: [Node11, Node14, Node16, Node18],
               Node18: [Node12, Node13, Node17]}

    return lattice

Tags: testnodenode1node5node2node3node4node7
2条回答

变量test是列表列表,而不是字母

在此行中:

test.append(items[0:])

您创建一个项目的“slice”,它本身就是一个列表,并将其插入到test
请注意,append并不串联列表,它只在列表的末尾添加一个新项(即使该项本身就是一个列表)

有两种方法可以解决您的问题:

  1. 只需像这样取出结肠:

    test.append(项[0])

    这将使test成为字母列表而不是列表列表

  2. 如果出于某种原因要保留切片,请使用test中每个列表的第一项来初始化Node对象,如下所示:

    Node1=节点(测试[0][0])

问题是对[0:]的误解删除:修复了问题

相关问题 更多 >

    热门问题