我使用Python来遍历一个里面有很多的元素的列表,因为我要判断它是否在另一个列表中,如果不存在则写入另一个列表,如果存在则不会重复写入,但它每次都会从头到尾遍历一个大列表,执行速度非常慢,如何优化
时间: 2023-04-03 19:03:19 浏览: 81
您可以使用Python中的集合(set)来优化这个问题。集合是一种无序的、不重复的数据结构,可以快速地判断一个元素是否存在于集合中。您可以将需要判断的列表转换为集合,然后遍历另一个列表,对于每个元素,判断它是否在集合中,如果不存在则写入另一个列表,并将它加入集合中。这样可以避免重复遍历大列表,提高执行速度。代码示例:
```
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
set1 = set(list1)
result = []
for item in list2:
if item not in set1:
result.append(item)
set1.add(item)
print(result)
```
相关问题
判断列表L是否有重复数据。算法流程:遍历L,当前元素如果在后续元素中出现,则有重复
好的,针对您提出的问题,可以使用以下算法流程来判断一个列表L是否有重复数据:
1. 遍历列表L中的每一个元素。
2. 对于每一个元素,从它的下一个元素开始遍历列表L。
3. 如果该元素在后续元素中出现过,则说明列表L中有重复数据,返回True。
4. 如果遍历完成后都没有找到重复数据,则返回False。
下面是Python代码实现:
```python
def has_duplicate(l):
for i in range(len(l)):
for j in range(i + 1, len(l)):
if l[i] == l[j]:
return True
return False
```
这个算法的时间复杂度是O(n^2),因为需要对每一个元素都进行一次遍历。如果列表L中的元素很多,这个算法可能会比较慢。如果需要更高效的算法,可以考虑使用集合(Set)来判断是否有重复数据。
一个存有很多"()”的字符串判断有几个合法的“()”
这个问题可以通过使用栈来解决。遍历字符串,如果遇到左括号就将其入栈,如果遇到右括号就将栈顶元素出栈。如果栈为空或者栈顶元素不是左括号,则该右括号不合法。最后,如果栈为空,则所有括号都是合法的,否则就有不合法的括号。
以下是示例代码:
```python
def count_valid_parentheses(s):
stack = []
count = 0
for c in s:
if c == '(':
stack.append(c)
elif c == ')':
if len(stack) == 0 or stack[-1] != '(':
continue
stack.pop()
count += 1
return count
s = '()()((()))'
print(count_valid_parentheses(s)) # 输出 5
```
这个字符串中有 5 个合法的括号。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)