Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

Tôi muốn nối các ký tự vào một chuỗi, nhưng muốn đảm bảo tất cả các chữ cái trong danh sách cuối cùng là duy nhất.unique.

Ví dụ:

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
2 →
In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
3

Bây giờ tất nhiên tôi có hai giải pháp trong tâm trí của tôi. Một là sử dụng

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
4 sẽ ánh xạ các ký tự bằng mã ASCII của họ. Vì vậy, bất cứ khi nào tôi gặp một chữ cái, nó sẽ đặt chỉ mục thành
In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
5. Sau đó tôi sẽ quét danh sách và nối tất cả những cái được đặt. Nó sẽ có độ phức tạp về thời gian của O (N).O(n).

Một giải pháp khác sẽ là sử dụng

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
6 và tuân theo quy trình tương tự. Sau khi ánh xạ mọi char, tôi sẽ thực hiện thao tác cho từng khóa trong từ điển. Điều này cũng sẽ có thời gian chạy tuyến tính.linear running time as well.

Vì tôi là một người mới Python, tôi đã tự hỏi rằng sẽ hiệu quả hơn về không gian. Cái nào có thể được thực hiện hiệu quả hơn?

PS: Đặt hàng không quan trọng trong khi tạo danh sách.: Order is not important while creating the list.

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

Martineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

Hỏi ngày 16 tháng 12 năm 2012 lúc 15:33Dec 16, 2012 at 15:33

Giải pháp đơn giản nhất có lẽ là:

In [10]: ''.join(set('aaabcabccd'))
Out[10]: 'acbd'

Lưu ý rằng điều này không đảm bảo thứ tự mà các chữ cái xuất hiện trong đầu ra, mặc dù ví dụ có thể đề xuất khác.

Bạn đề cập đến đầu ra dưới dạng "danh sách". Nếu một danh sách là những gì bạn thực sự muốn, hãy thay thế

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
7 bằng
In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
4:

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']

Theo như hiệu suất, lo lắng về nó ở giai đoạn này nghe có vẻ tối ưu hóa sớm.

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 15:36Dec 16, 2012 at 15:36

NPENPENPE

474K105 Huy hiệu vàng930 Huy hiệu bạc1002 Huy hiệu Đồng105 gold badges930 silver badges1002 bronze badges

6

Sử dụng một đơn đặt hàng. Điều này sẽ đảm bảo rằng đơn đặt hàng được bảo tồn

>>> ''.join(OrderedDict.fromkeys( "aaabcabccd").keys())
'abcd'

Tái bút: Tôi vừa định thời gian cả hai giải pháp đặt hàng và đặt, và sau này nhanh hơn. Nếu đơn đặt hàng không quan trọng, được đặt nên là giải pháp tự nhiên, nếu vấn đề đặt hàng thì đây là cách bạn nên làm.

>>> from timeit import Timer
>>> t1 = Timer(stmt=stmt1, setup="from __main__ import data, OrderedDict")
>>> t2 = Timer(stmt=stmt2, setup="from __main__ import data")
>>> t1.timeit(number=1000)
1.2893918431815337
>>> t2.timeit(number=1000)
0.0632140599081196

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 15:36Dec 16, 2012 at 15:36

NPENPEAbhijit

474K105 Huy hiệu vàng930 Huy hiệu bạc1002 Huy hiệu Đồng18 gold badges128 silver badges199 bronze badges

7

Sử dụng một đơn đặt hàng. Điều này sẽ đảm bảo rằng đơn đặt hàng được bảo tồn

>>> from itertools import groupby
>>> ''.join(k for k, g in groupby(sorted("aaabcabccd")))
'abcd'

Tái bút: Tôi vừa định thời gian cả hai giải pháp đặt hàng và đặt, và sau này nhanh hơn. Nếu đơn đặt hàng không quan trọng, được đặt nên là giải pháp tự nhiên, nếu vấn đề đặt hàng thì đây là cách bạn nên làm.Dec 16, 2012 at 16:08

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

Abhijitabhijitmartineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

char_seen = []
for char in string:
    if char not in char_seen:
        char_seen.append(char)
print(''.join(char_seen))

Hỏi ngày 16 tháng 12 năm 2012 lúc 15:33

Giải pháp đơn giản nhất có lẽ là:

abcd

Lưu ý rằng điều này không đảm bảo thứ tự mà các chữ cái xuất hiện trong đầu ra, mặc dù ví dụ có thể đề xuất khác.Oct 16, 2019 at 6:24

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

Bạn đề cập đến đầu ra dưới dạng "danh sách". Nếu một danh sách là những gì bạn thực sự muốn, hãy thay thế

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
7 bằng
In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
4:Amit Gupta

Theo như hiệu suất, lo lắng về nó ở giai đoạn này nghe có vẻ tối ưu hóa sớm.4 gold badges24 silver badges37 bronze badges

1

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 15:36

>>> ''.join(set( "aaabcabccd"))
'acbd'
>>>

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 15:36Dec 16, 2012 at 15:36

NPENPEgefei

474K105 Huy hiệu vàng930 Huy hiệu bạc1002 Huy hiệu Đồng8 gold badges49 silver badges67 bronze badges

1

Sử dụng một đơn đặt hàng. Điều này sẽ đảm bảo rằng đơn đặt hàng được bảo tồn

Tái bút: Tôi vừa định thời gian cả hai giải pháp đặt hàng và đặt, và sau này nhanh hơn. Nếu đơn đặt hàng không quan trọng, được đặt nên là giải pháp tự nhiên, nếu vấn đề đặt hàng thì đây là cách bạn nên làm.

uniue_char = list(set('aaabcabccd'))
#['a', 'b', 'c', 'd']

Abhijitabhijit

uniue_char = []
for c in 'aaabcabccd':
    if not c in uniue_char:
        uniue_char.append(c)
print(uniue_char)
#['a', 'b', 'c', 'd']

60.4K18 Huy hiệu vàng128 Huy hiệu bạc199 Huy hiệu đồngJun 3, 2019 at 11:36

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

dipenparmar12dipenparmar12dipenparmar12

Để có tính đầy đủ, đây là một công thức khác sắp xếp các chữ cái như một sản phẩm phụ của cách thức hoạt động của nó:1 gold badge30 silver badges37 bronze badges

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 16:08

Martineaumartineau

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
0

Điều này sẽ bảo tồn thứ tự mà bảng chữ cái đang đến,

đầu ra sẽ được

Đã trả lời ngày 16 tháng 10 năm 2019 lúc 6:24Oct 26, 2017 at 14:55

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

Amit Guptaamit Gupta

In [1]: list(set('aaabcabccd'))
Out[1]: ['a', 'c', 'b', 'd']
1

2.5524 Huy hiệu vàng24 Huy hiệu bạc37 Huy hiệu đồngJun 17 at 20:07

Hướng dẫn unique characters in a string python - ký tự duy nhất trong chuỗi python

1