forked from pylint-dev/pylint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
unnecessary_list_index_lookup.py
132 lines (100 loc) · 3.71 KB
/
unnecessary_list_index_lookup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
"""Tests for unnecessary-list-index-lookup."""
# pylint: disable=missing-docstring, too-few-public-methods, expression-not-assigned, line-too-long, unused-variable
my_list = ['a', 'b']
for idx, val in enumerate(my_list):
print(my_list[idx]) # [unnecessary-list-index-lookup]
for idx, _ in enumerate(my_list):
print(my_list[0])
if idx > 0:
print(my_list[idx - 1])
for idx, val in enumerate(my_list):
del my_list[idx]
for idx, val in enumerate(my_list):
my_list[idx] = 42
for vals in enumerate(my_list):
# This could be refactored, but too complex to infer
print(my_list[vals[0]])
def process_list(data):
for index, value in enumerate(data):
index = 1
print(data[index])
def process_list_again(data):
for index, value in enumerate(data):
value = 1
print(data[index]) # Can't use value here, it's been redefined
other_list = [1, 2]
for idx, val in enumerate(my_list):
print(other_list[idx])
OTHER_INDEX = 0
for idx, val in enumerate(my_list):
print(my_list[OTHER_INDEX])
result = [val for idx, val in enumerate(my_list) if my_list[idx] == 'a'] # [unnecessary-list-index-lookup]
result = [val for idx, val in enumerate(my_list) if idx > 0 and my_list[idx - 1] == 'a']
result = [val for idx, val in enumerate(my_list) if other_list[idx] == 'a']
result = [my_list[idx] for idx, val in enumerate(my_list)] # [unnecessary-list-index-lookup]
# Regression test for https://github.com/PyCQA/pylint/issues/6049
pairs = [(0, 0)]
for i, (a, b) in enumerate(pairs):
print(pairs[i][0])
# Regression test for https://github.com/PyCQA/pylint/issues/6603
for i, num in enumerate(): # raises TypeError, but shouldn't crash pylint
pass
# Regression test for https://github.com/PyCQA/pylint/issues/6788
num_list = [1, 2, 3]
for a, b in enumerate(num_list):
num_list[a], _ = (2, 1)
num_list = [1, 2, 3]
for a, b in enumerate(num_list):
([x, num_list[a]], _) = ([5, 6], 1)
# Regression test for https://github.com/PyCQA/pylint/issues/6818
updated_list = [1, 2, 3]
for idx, val in enumerate(updated_list):
while updated_list[idx] > 0:
updated_list[idx] -= 1
updated_list = [1, 2, 3]
for idx, val in enumerate(updated_list):
print(updated_list[idx]) # [unnecessary-list-index-lookup]
updated_list[idx] -= 1
print(updated_list[idx])
# Regression test for https://github.com/PyCQA/pylint/issues/6896
parts = ["a", "b", "c", "d"]
for i, part in enumerate(parts):
if i == 3: # more complex condition actually
parts.insert(i, "X")
print(part, parts[i])
# regression tests for https://github.com/PyCQA/pylint/issues/7682
series = [1, 2, 3, 4, 5]
output_list = [
(item, series[index])
for index, item in enumerate(series, start=1)
if index < len(series)
]
output_list = [
(item, series[index])
for index, item in enumerate(series, 1)
if index < len(series)
]
for idx, val in enumerate(series, start=2):
print(series[idx])
for idx, val in enumerate(series, 2):
print(series[idx])
for idx, val in enumerate(series, start=-2):
print(series[idx])
for idx, val in enumerate(series, -2):
print(series[idx])
for idx, val in enumerate(series, start=0):
print(series[idx]) # [unnecessary-list-index-lookup]
for idx, val in enumerate(series, 0):
print(series[idx]) # [unnecessary-list-index-lookup]
START = 0
for idx, val in enumerate(series, start=START):
print(series[idx]) # [unnecessary-list-index-lookup]
for idx, val in enumerate(series, START):
print(series[idx]) # [unnecessary-list-index-lookup]
START = [1, 2, 3]
for i, k in enumerate(series, len(START)):
print(series[idx])
def return_start(start):
return start
for i, k in enumerate(series, return_start(20)):
print(series[idx])