如何解决使用索引选择列表的适当行
我想在包含碳('C')的列表中提取行。
实际行是:
propene_data = ['H -0.08677109049370 0.00000005322169 0.02324774260533\n','C -0.02236345244409 -0.00000001742911 1.09944502076327\n','C 1.14150994274008 0.00000000299501 1.72300489107368\n','H -0.95761218150040 -0.00000002374717 1.63257861279343\n','H 1.17043966864771 0.00000000845005 2.80466760537188\n','C 2.46626448549704 -0.00000000616665 1.02315746104893\n','H 3.28540550052797 0.00000001315434 1.73628424885091\n','H 2.55984407099540 -0.87855375749407 0.38655722260408\n','H 2.55984405602998 0.87855372701591 0.38655719488850\n']
我尝试使用以下解决方案提取碳素线;
car1 = propene_data[1].split()
car2 = propene_data[2].split()
car3 = propene_data[5].split()
propene_carbons = car1 + car2 + car3
此解决方案给出了
propene_carbons = ['C','-0.02236345244409','-0.00000001742911','1.09944502076327','C','1.14150994274008','0.00000000299501','1.72300489107368','2.46626448549704','-0.00000000616665','1.02315746104893']
它给出了我想要的,但是我想知道是否可以代替索引(以防列表长得多)。在这种情况下如何使用索引编制?
解决方法
您需要的是startswith
:
result = text.startswith('C')
循环中:
result = [i for i in propene_data if i.startswith('C')]
输出:
,['C -0.02236345244409 -0.00000001742911 1.09944502076327\n','C 1.14150994274008 0.00000000299501 1.72300489107368\n','C 2.46626448549704 -0.00000000616665 1.02315746104893\n']
您可以使用此:
propene_array=np.array([i.split() for i in propene_data])
sub_array=np.where(propene_array[:,0]=='C')[0]
propene_carbon=[]
for i in sub_array :
propene_carbon+=list(propene_array[i])
输出:
['C','-0.02236345244409','-0.00000001742911','1.09944502076327','C','1.14150994274008','0.00000000299501','1.72300489107368','2.46626448549704','-0.00000000616665','1.02315746104893']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。