[:-1] và [:-4] có ý nghĩa gì?

e search trên gg nhưng ko ra xin a/c chỉ giúp

def get attributes(input,context,attributes):
    '''This function marks the entities in user input, and update
    the attributes dictionary'''
    #Can use context to to context specific attribute fetching
    if context.name.startswith('IntentComplete'):
        return attributes, uinput
    else:
        files = os.listdir('./entities/')
        entities = {}
        for fil in files:
            lines = open('./entities/'+fil).readlines()
            for i, line in enumerate(lines):
                lines[i] = line[:-1]
            entities[fil[:-4]] = '|'.join(lines)

        for entity in entities:
            for i in entities[entity].split('|'):
                if i.lower() in uinput.lower():
                    attributes[entity] = i
        for entity in entities:
            uinput = re.sub(entities[entity], r'$'+entity,uinput,flags=re.IGNORECASE)

Mình không biết và chưa dùng python, thế mà nhấn tìm thì được:

Từ khóa: python index slicing.

4 Likes

thanks bạn ^^ vì python mình tự học nên nhiều điều chưa hiểu lắm

Cắt lấy 1 phần của mảng.
[:-1] là lấy giá trị cuối
[:-4] là lấy 4 giá trị cuối cùng đếm từ -1, -2 , -3 ,-4

3 Likes

hình như sai rồi bạn
[-1] mới là giá trị cuối
[:-1] là lấy đến giá trị kế cuối vì range(a,b) trong python là [ )
[:-4] là lấy đến giá trị thứ 5 từ cuối cùng
có thể hiểu thế này index bình thường 0, 1, 2, 3, 4, 5, 6, 7
thì trong python python có thể đếm ngược lại từ số cuối là -8, -7, -6, -5, -4, -3, -2, -1

3 Likes
my_string = 'abcdef0987654321'

print(my_string[:-1])
# Output: abcdef098765432

print(my_string[:-4])
# Output: abcdef098765


my_string2 = 'abcdef0987654321\n'

print(my_string2[:-1])
# Output: abcdef0987654321
1 Like

Gọi arr là một list trong, thì cú pháp arr[a:b] để lấy list con từ vị trí (index) a đến trước vị trí b.

Nếu index là một số nguyên không âm, thì vị trí trong list được đếm từ đầu list, bắt đầu từ 0, vị trí sau lớn vị trí đầu là 1 đơn vị.

#       0    1    2    3    4
arr = ['D', 'r', 'g', 'n', 'z']
arr[0] == 'D'
arr[2] == 'g'
arr[4] == 'z'

Nếu index là số nguyên âm, thì vị trí trong list được đếm ngược lại, bắt đầu từ -1, vị trí trước nhỏ hơn vị trí sau 1 đơn vị

#      -5   -4   -3   -2   -1
arr = ['D', 'r', 'g', 'n', 'z']
arr[-1] == 'z'
arr[-2] == 'n'
arr[-5] == 'D'

Khi đó, arr[a:b] lấy list con từ vị trí a đến trước vị trí b, ab có thể âm, dương hoặc bằng 0. Tuỳ vào dấu của ab mà có cách lấy vị trí khác nhau.

#       0    1    2    3    4
#      -5   -4   -3   -2   -1
arr = ['D', 'r', 'g', 'n', 'z']

arr[2:4] == ['g','n']
arr[0:3] == ['D','r','g']

arr[-4:-1] == ['r','g','n']
arr[-5:-3] === ['D','r']

arr[2:-1] == ['g','n']
arr[-4:4] == ['r','g','n']

arr[3:-4] == []
arr[-4:0] == []

Nếu không viết index a thì a = 0, nếu không viết index b thì b = len(arr)

#       0    1    2    3    4
arr = ['D', 'r', 'g', 'n', 'z']
arr[:3] == ['D','r','g']         # arr[0:3]
arr[3:] == ['n','z']             # arr[3:5]
arr[:]  == ['D','r','g','n','z'] # arr[0:5]
4 Likes

Uh nhỉ đúng rồi chắc mình hiểu nhầm với [-1:] .Thanks

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?