如何删除列表元素

时间:2019-04-18 21:49:55

标签: python list

我正在尝试制作一个小程序,将弄乱字母表中的字母(简单来说)

我尝试使用list.pop()list.remove()之类的东西,但这些都没做

import random


def rand_let():
    i = 26
    alphabet = str('')
    for a in range(1, 26):
        key = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
        print(len(key))
        print(key)
        letter = random.randint(1, i)
        print(key[letter])
        letters = key[letter]
        alphabet += str(letters)
        key.remove(letter)
        i -= 1


rand_let()

我希望它弄乱字母, 是的,但是这样做的方式会使字母重复(我不想重复)

4 个答案:

答案 0 :(得分:1)

shuffle中的random函数将为您节省很多行,并且可以满足您的需求:

import random

alphabet = ['A', 'B', 'C']
random.shuffle(alphabet)

print(alphabet)
#Ex: ['C', 'A', 'B']

答案 1 :(得分:1)

得到重复项的原因是,尽管您具有从键列表中删除字母的代码,但声明键列表的行也位于循环内。尝试移动线

key = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

for循环上方。或者,根据其他答案的建议,使用图书馆为您完成此任务。

答案 2 :(得分:0)

import random
import string
alphabet = [letter for letter in string.ascii_uppercase]
random.shuffle(alphabet)
print(alphabet)

答案 3 :(得分:0)

这只会随机排列列表,然后为for循环的每次迭代逐一打印列表的元素。

import random 

key = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

random.shuffle(key)

def choice(x):

    for letter in key:

        print()

choice(key)