如何使用for循环在python中添加列表

时间:2018-11-01 09:10:44

标签: python for-loop append

我要附加my_list

list2 = ['1','2','3','4','5']

my_list = []
for i in list2:
    my_list.append(i)

print(my_list)

这会将list2放入my_list。

结果是

['1', '2', '3', '4', '5']

但是我只想要值'2'和'5')

是这样的:

[ '2', '5']

尝试过

for i in list2:
    my_list.append(i[1:4])

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

只需将一个条件与list comprehension结合使用:

my_list = [item for item in list2 if item == '2' or item == '5']

答案 1 :(得分:0)

这取决于如何确定将list2的哪些元素添加到my_list中,而您没有提到:
现在,您可以按照@ MihaiAlexandru-Ionut的建议进行操作。
或:

list2 = ['1','2','3','4','5']

my_list = []
my_list.append(list2[1])
my_list.append(list2[4])

print(my_list)

# or

my_list = []
my_list = [list2[1], list2[4], ]
print(my_list)

答案 2 :(得分:0)

这是一种简短的方法。但是请注意,如果列表中有重复的元素,它将破坏。

list2 = ['1','2','3','4','5']

my_list = []

want = ['2', '5']

my_list = [list2[list2.index(i)] for i in list2 for item in want if i == item] # will fail if elements are not unique.

最后一行等效于此

my_list = [item for i in list2 for item in want if i == item] # much better than using index method.

这是展开的表格。

list2 = ['1','2','3','4','5']
my_list = []
want = ['2', '5']
for i in list2:
    for item in want:
        if i == item:
            my_list.append(list2[list2.index(i)])
            #my_list.append(item)


print(my_list)

答案 3 :(得分:0)

可能就是这样

list2 = ['1','2','3','4','5']

target_idexes = [2, 5]

my_list = []
for i in list2:
    my_list.append(i) if int(i) in target_idexes else 0

print(my_list)    # ['2', '5']

或者如果在list2中不仅只有数字:

list2 = ['1','2','3','4','5']

target_idexes = [2, 5]

my_list = []
for i in list2:
    my_list.append(i) if list2.index(i) in target_idexes else 0

print(my_list)    # ['3'] because indexing start from 0 and 5 is out of range

答案 4 :(得分:0)

最简单,最快的方法是对循环中要搜索的特定值使用条件语句。

if i == 2 or i == 5:
   new_list.append(i)

此方法的缺点是,如果您需要扩展要检索的值的范围,则需要编写最长的条件if i == 1 or i == 5 ... or i == N:,这不仅很不好看,而且是不好的编程习惯,因为该代码很难维护。

一种更好的方法是拥有一个包含要检索的值的列表,并在将其添加到新列表之前检查实际元素是否是此列表。

list2 = ['1','2','3','4','5']

wanted = ['2','5'] #what I search
my_list = []
for value in list2:
  if value in wanted: #when value is what a I want, append it
    my_list.append(value)

但是,如果要按元素的位置添加元素,而不是查找每个出现的特定值,则可以使用整数列表并在其上循环以添加所需的元素。

positions = [1,4] #indicates the positions from which I want to retrieve elements
new_list = [list[p] for p in positions] #using list comprehension for brevity

注意

最后我要补充的是,在python中您无法执行

my_list.append(i[0,4]) 

因为python在查看[0,4]时,会像传递一个元组一样解释它(因为逗号),并且会出现以下错误TypeError: list indices must be integers or slices, not tuple