Hướng dẫn remove last character from string in list python - xóa ký tự cuối cùng khỏi chuỗi trong danh sách python

Tôi có chuỗi '80010', '80030', '80050' trong danh sách, như trong

test = ['80010','80030','80050']

Làm thế nào tôi có thể xóa ký tự cuối cùng [trong trường hợp này là chữ số cuối cùng của mỗi chuỗi là 0], để tôi có thể kết thúc với một danh sách khác chỉ chứa bốn chữ số/ký tự đầu tiên từ mỗi chuỗi? Vì vậy, kết thúc với một cái gì đó giống như

newtest = ['8001', '8003', '8005']

Tôi rất mới đối với Python nhưng tôi đã thử các câu lệnh if-else, thêm vào, sử dụng lập chỉ mục [: -1], v.v. nhưng dường như không có gì hoạt động trừ khi tôi cuối cùng xóa tất cả các số không khác của mình. Cảm ơn bạn rất nhiều!

Timgeeb

75K20 Huy hiệu vàng117 Huy hiệu bạc142 Huy hiệu Đồng20 gold badges117 silver badges142 bronze badges

hỏi ngày 19 tháng 1 năm 2016 lúc 0:54Jan 19, 2016 at 0:54

test = ["80010","80030","80050"]
newtest = [x[:-1] for x in test]

Thử nghiệm mới sẽ chứa kết quả ["8001","8003","8005"].

[x[:-1] for x in test] tạo một danh sách mới [sử dụng danh sách hiểu] bằng cách lặp qua từng mục trong

newtest = ['8001', '8003', '8005']
0 và đặt một phiên bản sửa đổi vào
newtest = ['8001', '8003', '8005']
1.
newtest = ['8001', '8003', '8005']
2 có nghĩa là lấy mọi thứ trong giá trị chuỗi x lên đến nhưng không bao gồm phần tử cuối cùng.

Đã trả lời ngày 19 tháng 1 năm 2016 lúc 0:56Jan 19, 2016 at 0:56

MatthewmatthewMatthew

7.3351 Huy hiệu vàng23 Huy hiệu bạc49 Huy hiệu đồng1 gold badge23 silver badges49 bronze badges

2

Bạn không quá xa. Sử dụng ký hiệu lát [: -1] là cách tiếp cận đúng. Chỉ cần kết hợp nó với sự hiểu biết danh sách:

>>> test = ['80010','80030','80050']
>>> [x[:-1] for x in test]
['8001', '8003', '8005']

newtest = ['8001', '8003', '8005']
3 cung cấp cho bạn mọi thứ từ ký tự ở vị trí 0 [bao gồm] đến ký tự cuối cùng [độc quyền].

Đã trả lời ngày 19 tháng 1 năm 2016 lúc 0:57Jan 19, 2016 at 0:57

Timgebtimgebtimgeb

75K20 Huy hiệu vàng117 Huy hiệu bạc142 Huy hiệu Đồng20 gold badges117 silver badges142 bronze badges

hỏi ngày 19 tháng 1 năm 2016 lúc 0:54

Thử nghiệm mới sẽ chứa kết quả ["8001","8003","8005"].

test = ['80010','80030','80050']
print map[lambda x: x[:-1],test]
# ['8001', '8003', '8005']

[x[:-1] for x in test] tạo một danh sách mới [sử dụng danh sách hiểu] bằng cách lặp qua từng mục trong

newtest = ['8001', '8003', '8005']
0 và đặt một phiên bản sửa đổi vào
newtest = ['8001', '8003', '8005']
1.
newtest = ['8001', '8003', '8005']
2 có nghĩa là lấy mọi thứ trong giá trị chuỗi x lên đến nhưng không bao gồm phần tử cuối cùng.

Đã trả lời ngày 19 tháng 1 năm 2016 lúc 0:56

MatthewmatthewJan 19, 2016 at 1:00

7.3351 Huy hiệu vàng23 Huy hiệu bạc49 Huy hiệu đồngRockybilly

Bạn không quá xa. Sử dụng ký hiệu lát [: -1] là cách tiếp cận đúng. Chỉ cần kết hợp nó với sự hiểu biết danh sách:1 gold badge13 silver badges37 bronze badges

1

newtest = ['8001', '8003', '8005']
3 cung cấp cho bạn mọi thứ từ ký tự ở vị trí 0 [bao gồm] đến ký tự cuối cùng [độc quyền].

#variables declaration
test = ['80010','80030','80050'] 
length = len[test]                 # for reading and writing sakes, len[A]: length of A
newtest = [None] * length          # newtest = [none, none, none], go look up empty array creation
strLen = 0                         # temporary storage

#adding in newtest every element of test but spliced
for i in range[0, lenght]:         # for loop
    str = test[i]                  # get n th element of test
    strLen = len [str]             # for reading sake, the lenght of string that will be spliced
    newtest[i] = str[0:strLen - 1] # n th element of newtest is the spliced n th element from test

#show the results
print [newtest]                    # ['8001','8003','8005']

Đã trả lời ngày 19 tháng 1 năm 2016 lúc 0:57

TimgebtimgebNov 3, 2018 at 17:04

Chỉ để hiển thị một giải pháp hơi khác với sự hiểu biết, cho rằng các câu trả lời khác đã giải thích cắt lát, tôi chỉ đi qua phương pháp.NRagot

Với chức năng bản đồ.2 silver badges9 bronze badges

Để biết thêm thông tin về giải pháp này, xin vui lòng đọc lời giải thích ngắn gọn tôi đã làm trong một câu hỏi tương tự khác.

List timeInDays = new ArrayList[];
timeInDays.add[2d];
timeInDays.add[3d];
timeInDays.add[4d];

Chuyển đổi danh sách thành một chuỗi các chuỗi chuỗi

List trimmedList = new ArrayList;
for[int i=0;i

Bài Viết Liên Quan

Chủ Đề