【问题标题】:Creating a new list from 2 lists based on the index return from a third list根据从第三个列表返回的索引从 2 个列表创建一个新列表
【发布时间】:2015-11-01 15:58:01
【问题描述】:

假设我有以下列表(Python 3):

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

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

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]

【问题讨论】:

  • 您有问题吗?

标签: python list python-3.x


【解决方案1】:
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]

【讨论】:

    【解决方案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(复数)以与其他列表的命名约定保持一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2018-06-20
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2017-05-23
      • 2017-01-29
      相关资源
      最近更新 更多