将列表元素中特定位置的项目复制到Python中的新列表

时间:2017-04-29 04:21:48

标签: python list python-3.x

在C ++方面经验丰富,但对Python来说是新的:我想将以下列表中每个元素中的第二个字符命名为输入到名为output的新列表。

input = ['hail','2198','1721','1925']

output = ['a', '1', '7', '9']

我错过了一个简单的操作员吗?感谢

4 个答案:

答案 0 :(得分:1)

这是列表理解:

>>> input_ = ['hail','2198','1721','1925']
>>> [s[1] for s in input_]
['a', '1', '7', '9']

请注意,input是Python中内置函数的名称,因此您应该避免将该名称用于局部变量。

答案 1 :(得分:1)

  

欢迎使用Python编程:)。

从字符串s中获取字符的语法是s[i],其中i以0开头并上升到n-1,其中n是字符串的长度。

在Python中,可以使用在阅读时解释自身的语法来创建元素列表。 item[1]表示在此上下文中,字符串中的第二个字符/元素来自输入,因为Python在此上下文中将字符串视为字符列表。

在Internet上搜索详细信息的正确关键字将是“Python list comprehension”和“Python list slice”。

output = [item[1] for item in input_] (see note in the other answer about 'input')

与C ++相比,Python将使编码成为一种乐趣。你只需要用这种方式写出你的意思,它可能就像在Python中那样 - 这就是我自己从C ++到Python的方式。

答案 2 :(得分:1)

这是针对'2'之后的角色。

input_ = ['hail','2198','1721','1925']
result_list = []
for element in input_:
    character = '2' # in this case
    index_of_character = element.find(character)
    if index_of_character != -1 and index_of_character != len(element) -1:
        # -1 if character is not found in the string no need to append element after that
        # character should not be the last in the string otherwise index out of bound will occur
        result_list.append(element[index_of_character + 1])

print (result_list)

PS:如果字符串中有多个'2',则此方法仅在第一次出现两个字符时才给出字符。你必须调整这个方法

答案 3 :(得分:0)

您可以使用list-comprehension在一行中解决它。您可以在某个索引i处使用input[i][1]选择第二个索引元素。

>>>input = ['hail','2198','1721','1925'] 
>>>[x[1] for x in input]
['a', '1', '7', '9']

[x[1] for x in input]将创建一个元素列表,其中每个元素都为x[1]