基于第三个lis返回的索引,从两个列表中创建一个新列表

2024-03-29 09:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下列表(Python3):

numbers = [1,2,3,4,5,6]
letters = [a,b,a,b,c,c]
state = [False, False, False, False, False, False]

我要做的是从用户那里接收两个在列表字母长度范围内的索引位置的输入。如果他的选择对应于匹配的字母,例如a和a(索引0和2),那么对于所述位置,列表状态必须从False更改为True。之后,它应该根据新的状态列表创建一个新列表,如果状态中的元素为False,则从数字中获取索引项,如果状态为true,则从列表字母中获取索引项:

choice = 0
choice_2 = 2
if letters[choice] == letters[choice_2]:
   change state[choice] and state[choice_2] to True
create fourth list from list state and use values from numbers and letters
For i in range(len(state)):
    if state[i] == True:
       element in index[i] of list letters is used
    else:
       element in index[i] of list numbers is used

创建新列表,以便:

new_list = [a,2,a,4,5,6]

Tags: andinfromfalsetrue列表if状态
2条回答

下面是我的解决方案:使用列表理解创建第四个列表,我将其命名为mixed。你知道吗

numbers = [1, 2, 3, 4, 5, 6]
letters = ['a', 'b', 'a', 'b', 'c', 'c']
states = [False, False, False, False, False, False]

choice1 = 0
choice2 = 2

if letters[choice1] == letters[choice2]:
    states[choice1] = True
    states[choice2] = True

mixed = [letter if use_letter else number
         for number, letter, use_letter in zip(numbers, letters, states)]

print numbers
print letters
print states
print mixed

输出:

[1, 2, 3, 4, 5, 6]
['a', 'b', 'a', 'b', 'c', 'c']
[True, False, True, False, False, False]
['a', 2, 'a', 4, 5, 6]

注意,在代码中,我压缩了三个列表,并使用states列表中的元素从其他两个列表中选取元素。另外,我将state(单数)重命名为states(复数),以与其他列表的命名约定保持一致。你知道吗

numbers = [1,2,3,4,5,6]
letters = ["a","b","a","b","c","c"]
state = [False, False, False, False, False, False]


choice1 = input("Enter Your 1st choice: ")
choice2 = input("Enter Your 2nd choice: ")

if letters[choice1] == letters[choice2]:
    state[choice1] = (not state[choice1])
    state[choice2] = (not state[choice2])

List = []

print state
for i in range(len(state)):
    if state[i] == True:
        List.append(letters[i])
    else:
        List.append(numbers[i])

print List

输入:

Enter Your 1st choice: 0
Enter Your 1st choice: 2

输出:

['a', 2, 'a', 4, 5, 6]

相关问题 更多 >