亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python代碼從列表中獲取結束大括號索引

python代碼從列表中獲取結束大括號索引

慕森王 2021-12-21 16:25:05
我有我的字符串輸入列表,我需要在其中傳遞任何左大括號的索引,并期望我的 python 函數返回其相應的右大括號的索引及其值。輸入列表:mylist=['a','b(','(','cd','d(e)','hi)','last brace) ']我需要獲取列表的索引和字符串getindex=func(mylist[2])getindex 應該有hi)索引 5。它應該忽略 ex:d(e)或last brace)等之間的任何相應的平衡大括號。getindex=(5,'hi)')我對 python 不太熟悉,感謝您幫助我的時間。謝謝!
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

你只需要從起始行開始計算左大括號,當遇到左大括號時,增加它,當遇到右大括號時,減少它。當它再次達到零時,您會找到正確的索引。


示例代碼:


def get_closing_brace_index(str_list, left_idx):

    # input check, you can ignore it if you assure valid input

    if left_idx < 0 or left_idx >= len(str_list) or '(' not in str_list[left_idx]:

        return -1, ''


    # use a left brace counter

    left_count = 0

    # just ignore everything before open_brace_index

    for i, s in enumerate(str_list[left_idx:]):

        for c in s:

            if c == '(':

                left_count += 1

            elif c == ')':

                left_count -= 1

                # find matched closing brace

                if left_count == 0:

                    return i + left_idx, str_list[i + left_idx]

                # invalid brace match

                elif left_count < 0:

                    return -1, ''

    return -1, ''


def test():

    mylist = [

        'a',

        'b(',

        '(',

        'cd',

        'd(e)',

        'hi)',

        'last brace) '

    ]


    print(get_closing_brace_index(mylist, 1))

    # output (6, 'last brace) ')

    print(get_closing_brace_index(mylist, 2))

    # output (5, 'hi)')

    print(get_closing_brace_index(mylist, 4))

    # output (4, 'd(e)')

    print(get_closing_brace_index(mylist, 0))

    # output (-1, '')

    print(get_closing_brace_index(mylist, 6))

    # output (-1, '')

希望能幫到你。


查看完整回答
反對 回復 2021-12-21
  • 1 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號