ooxx7788 发表于 2017-6-14 10:57:40

Python:每日一题 65

本帖最后由 ooxx7788 于 2017-6-14 18:19 编辑

unique_in_order('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
unique_in_order('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
unique_in_order()       ==

我觉得例子已经足以说明一切了。注意,给定字符串可以为空。

其实出这个题我主要是想引入这个东西:

>>> for key, group in itertools.groupby('AAABBBCCAAA'):
...   print(key, list(group))
...
A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']

你们再看看呢。
**** Hidden Message *****

jerryxjr1220 发表于 2017-6-14 11:19:16

本帖最后由 jerryxjr1220 于 2017-6-14 11:22 编辑

unique_in_order = lambda s: ] + for i in range(1, len(s)) if s != s] if s else []

瓦蓝 发表于 2017-6-14 20:02:37

大神的每日一题很好,学习到很多使用的知识

ooxx7788 发表于 2017-6-14 20:28:23

瓦蓝 发表于 2017-6-14 20:02
大神的每日一题很好,学习到很多使用的知识

但是你从来不写!

Teagle 发表于 2017-6-15 10:34:01

啥隐藏内容更

Teagle 发表于 2017-6-15 11:47:26

str = input('please enter a string:')

unique = list(set(str))
unique.sort()
groupby = ''.join(unique)

print (groupby)

please enter a string:AbsCd123S
123ACSbds

ooxx7788 发表于 2017-6-15 11:50:35

Teagle 发表于 2017-6-15 11:47


题目好像没有要求sort吧
而且使用set会去重,并不符合题目要求。

Teagle 发表于 2017-6-15 14:28:02

ooxx7788 发表于 2017-6-15 11:50
题目好像没有要求sort吧
而且使用set会去重,并不符合题目要求。

好吧,曲解了{:5_90:}{:5_90:}

SixPy 发表于 2017-6-15 16:26:53

>>> ss='AAAABBBCCDAABBB'
>>> +'\0')if a!=b]
['A', 'B', 'C', 'D', 'A', 'B']

ooxx7788 发表于 2017-6-15 16:34:13

本帖最后由 ooxx7788 于 2017-6-15 16:36 编辑

SixPy 发表于 2017-6-15 16:26


第3条可是包含的全部是整型的列表哦,你这个可跑不出来哦!{:10_264:}
不过方法很666,涨姿势了

SixPy 发表于 2017-6-15 16:38:57

ooxx7788 发表于 2017-6-15 16:34
第3条可是包含的全部是整型的列表哦,你这个可跑不出来哦!
不过方法很666,涨姿势了

道理是一样的,都是序列
这些都是写着玩~
知道原理就行

concrete 发表于 2017-6-15 21:05:59

list1 = list('AAAABBBCCDAABBB')
list2 = []
for i in list1:
    if i not in list2:
      list2.append(i)
print(list2)

ooxx7788 发表于 2017-6-15 21:23:48

concrete 发表于 2017-6-15 21:05
list1 = list('AAAABBBCCDAABBB')
list2 = []
for i in list1:


自己执行下,看看结果对不对吧!

concrete 发表于 2017-6-15 22:51:22

list1 = list('ABBBCcAD')
list2 = []
list2.append(list1)
a = 1
for i in list1:
    if i != list2:
      list2.append(i)
      a += 1
print(list2)

concrete 发表于 2017-6-15 22:53:58

from collections import OrderedDict
chs = 'ABBCcAD'
list(OrderedDict.fromkeys(chs))

三万天 发表于 2017-6-16 10:31:38

学习了!

badaoqingchen 发表于 2017-6-16 17:20:47

000

gopythoner 发表于 2017-6-16 17:35:21

本帖最后由 gopythoner 于 2017-6-16 17:39 编辑

def unique_in_order(a):
a = list(a)
a.append(" ")
lis = []
for i in range(len(a)-1):
    if a==a:
      pass
    else:
      lis.append(a)
return lis

a = 'AAAABBBCCDAABBB'
b = 'ABBCcAD'
c =

for k in :
print(unique_in_order(k))

输出
['A', 'B', 'C', 'D', 'A', 'B']
['A', 'B', 'C', 'c', 'A', 'D']

solomonxian 发表于 2017-7-31 20:29:50

应该就是去除元素中的连续重复
def unique_in_order(s):
    result = [""]
    ]
    return result
引出groupby后面题目是什么?这个groupby还有个key参数吧,如果只管第一个参数的话
# 如果groupby只有第一个参数的话
def my_groupby(s):
    key, group = [""],[]
    index = 0
    for i in range(len(s)):
      if s != key[-1]:
            key.append(s)
            group.append(s)
            index = i
    group.append(s)
    return list(zip(key,group))

solomonxian 发表于 2017-7-31 20:49:28

这答案···
原来楼主是说使用groupby,不是重写groupby啊,orz{:10_247:}

jerry大神用三元操作符解决空输入,用列表+推导式解决索引的-1,赞
我一直想不到怎么写到一行上

版主那里用错位zip来判断,感觉很巧妙啊,666
页: [1] 2
查看完整版本: Python:每日一题 65