fragments=new Fragment[]{ new draftsFragment(), new textFragment() };
时间: 2024-05-20 07:12:44 浏览: 10
这段代码创建了一个包含两个 Fragment 的数组,分别是 draftsFragment 和 textFragment。这个数组可以作为参数传递给 FragmentPagerAdapter 或 FragmentStatePagerAdapter,用于管理 ViewPager 中的 Fragment。当用户滑动 ViewPager 时,PagerAdapter 将会根据当前位置从数组中获取对应的 Fragment,并将其添加到 ViewPager 中显示。
相关问题
优化这段代码 private void initPager() { ArrayList<User> list=new ArrayList<>(); ViewPager2 viewPager = findViewById(R.id.view_pager); ArrayList<Fragment> fragments=new ArrayList<>(); User user1=new User(); user1.setSong("等风吹"); user1.setSinger("不是花火呀/小田音乐社"); user1.setImageid(R.drawable.song1); list.add(user1); fragments.add(new ExampleFragment(list)); ViewPagerAdapter pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),getLifecycle(),fragments); viewPager.setAdapter(pagerAdapter); }
private void initPager() {
ViewPager2 viewPager = findViewById(R.id.view_pager);
ArrayList<Fragment> fragments = new ArrayList<>();
User user1 = new User();
user1.setSong("等风吹");
user1.setSinger("不是花火呀/小田音乐社");
user1.setImageid(R.drawable.song1);
fragments.add(ExampleFragment.newInstance(user1));
ViewPagerAdapter pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), getLifecycle(), fragments);
viewPager.setAdapter(pagerAdapter);
}
// 在 ExampleFragment 中添加 newInstance() 静态方法
public static ExampleFragment newInstance(User user) {
ExampleFragment fragment = new ExampleFragment();
Bundle args = new Bundle();
args.putSerializable("user", user);
fragment.setArguments(args);
return fragment;
}
// 在 ExampleFragment 中获取 User 数据
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mUser = (User) getArguments().getSerializable("user");
}
}
def fragment_score(mols, fragment_lib): fragments = Chem.MolFragmentToSmiles(mols, frags=None, maxResults=1000000, \ canonical=True, isomericSmiles=False, kekuleSmiles=False, \ allBondsExplicit=False, allHsExplicit=False, doRandom=False) score = 0 for f in fragments: if f in fragment_lib: score += fragment_lib[f] else: mol_frag = Chem.MolFromSmiles(f) score += Descriptors.MolWt(mol_frag) + \ rdMolDescriptors.CalcNumRotatableBonds(mol_frag) return score优化这段代码
这段代码的性能瓶颈在于循环遍历所有的分子片段并逐一计算分数。为了优化这段代码,可以考虑以下几点:
1. 避免重复计算分子片段:在循环遍历分子片段之前,可以先将所有的分子片段存储到一个集合(set)中,这样可以避免重复计算分子片段。
2. 使用字典(dict)存储分子片段得分:可以将分子片段和其得分存储到一个字典中,这样可以快速查找分子片段得分,而不需要每次都遍历整个字典。
3. 使用化学指纹(fingerprint)匹配分子片段:可以使用化学指纹来匹配分子片段,这样可以更快速地查找分子片段得分。
下面是优化后的代码:
```
from rdkit import Chem
from rdkit.Chem import Descriptors, rdMolDescriptors
def fragment_score(mols, fragment_lib):
fragments = set()
for mol in mols:
mol_fragments = Chem.GetMolFrags(mol, asMols=True)
for mol_frag in mol_fragments:
fragments.add(Chem.MolToSmiles(mol_frag, isomericSmiles=False))
fragment_scores = {}
for f in fragments:
if f in fragment_lib:
fragment_scores[f] = fragment_lib[f]
else:
mol_frag = Chem.MolFromSmiles(f)
fragment_scores[f] = Descriptors.MolWt(mol_frag) + rdMolDescriptors.CalcNumRotatableBonds(mol_frag)
score = sum(fragment_scores.values())
return score
```
这样优化后的代码可以更快速地计算分子片段的得分,提高了代码的性能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)