在C ++方面经验丰富,但对Python来说是新的:我想将以下列表中每个元素中的第二个字符命名为输入到名为output的新列表。
input = ['hail','2198','1721','1925']
output = ['a', '1', '7', '9']
我错过了一个简单的操作员吗?感谢
答案 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]
。