我有一个 pandas 列,其中包含用户执行的连续日志操作列表,同时在每个整个日志记录 session 中在移动应用程序中发布一张照片。假设单个列表如下所示:
my_list = [
'action_a', 'action_b', 'action_c', 'action_z',
'action_j',
'action_a','action_b',
'action_a', 'action_b', 'action_z']
1) action_a - 照片上传开始
2) action_z - 照片上传结束
3) other actions_i - action_a 和 action_z 之间可以发生的所有 Action 。
4) 可能存在错误,例如“action_j”,不在“action_a”、“action_z”之间,我们不应该考虑这些错误
5) 照片上传过程可能未完成 - 因此可能存在类似“action_a”、“action_b”的路径。
GOAL = 将 my_list 分成所有 Action 路径的子列表,这些路径以“action_a”开始并以“action_z”结束或在另一个“action_a”之前结束。所以结果应该是这样的:
['action_a', 'action_b', 'action_c', 'action_z']
['action_a','action_b']
['action_a', 'action_b', 'action_z']
所以目前我正在尝试这样解决它:首先我删除了所有 my_lists,其中 'action_z' 的数量大于 'action_a' 的数量或者没有 'action_a' 的地方。然后我这样做了:
indices_a = [i for i, x in enumerate(my_list) if x == "action_a"]
indices_z = [i for i, x in enumerate(my_list) if x == "action_z"]
if(len(indices_z)<1):
for i_a,x_a in enumerate(indices_a):
if (i_a+1 != len(indices_a)):
indices_z.append(indices_a[i_a+1]-1)
else: indices_z.append(len(my_list)-1)
else:
for i_a,x_a in enumerate(indices_a):
if (i_a+1 != len(indices_a)):
if (indices_z[i_a] > indices_a[i_a+1] ):
indices_z.insert(i_a, indices_a[i_a+1]-1)
else: indices_z.append(len(my_list)-1)
res=[]
for i,j in zip(indices_a, indices_z):
res.append(my_list[i:j+1] )
看起来好像有效。什么是更好的方法?
最佳答案
我试图稍微简化一些事情并想出了这个逻辑:
result = []
curr_list = None
for item in my_list:
if item == 'action_a':
if curr_list is not None:
# Only append is there is content
result.append(curr_list)
# Create a new list
curr_list = []
try:
# Try to append the current item
curr_list.append(item)
if item == 'action_z':
# Close the current list but don't initialize
# a new one until we encounter action_a
result.append(curr_list)
curr_list = None
except AttributeError:
# This means we haven't encountered action_a yet
# Just ignore and move on
pass
if curr_list is not None:
# Append an "open" list if there is one
result.append(curr_list)
for item in result:
print(item)
结果:
['action_a', 'action_b', 'action_c', 'action_z']
['action_a', 'action_b']
['action_a', 'action_b', 'action_z']
关于python - 基于模式分离列表的最优雅方式(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604224/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht